本文所结合图书及视频

《C语言程序设计(第四版)谭浩强.pdf》

《C语言入门到精通—鹏哥带你C语言从入门到精通》

《郝斌老师的C语言自学视频》

这些在B站上都能找得到的。

学习目标:

熟练掌握C语言函数(重点)知识。

学习任务:

一、C语言中函数是什么?

1、函数是什么?

第一,函数就是 C 语言的模块,一块一块的,有较强的独立性,可以相互调用,换句话说,C 语言中,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。这就是结构化程序设计,所以面向过程的语言又叫结构化语言。
第二,函数就是一系列 C 语句的集合,能完成某个特定的功能。需要该功能的时候直接调用该函数即可,不用每次都堆叠代码。需要修改该功能时,也只需要修改和维护这一个函数即可。

2、为什么需要函数?

第一,使用函数可以解决大量同类型的问题,避免了一些重复性操作。

第二,使用函数可以更方便代码的维护,而且有利于程序的模块化。

二、如何定义函数?

        函数的返回类型 函数名 (函数的形参列表)   -- 形参可以是一个或多个,中间用逗号隔开           {

        函数的执行体      --   可能是一句或者多句代码组成的代码块。

        return 返回值;        --如果返回值与返回类型不一致时,会强转(前提是可以强转时)

        }

三、函数的分类

函数分为库函数自定义函数。 

1、什么是库函数?

C语言自带的函数称为库函数。C语言在发布时已经封装好了很多函数,它们被放置到不同的头文件中,使用函数时引入对应的头文件即可。这些函数都是专家编写的,执行效率极高,并且考虑到了各种边界情况,各位读者可以放心使用。使用这些函数会让C语言更加标准化。

2、库函数都有哪些?

IO函数                             --  标准输入输出         printf     scanf    getchar     putchar

字符串操作函数               --  对字符串操作        strcpy(字符串拷贝)  strlen(求字符串长度)

字符操作函数                  --  对字符操作            toupper(将字符小写变大写)

内存操作函数                  --  对内存操作            memset(将某块内存中的内容设置为指定的值)

时间日期函数                                                    time(获取当前系统时间)

数学函数                                                           sqrt(开平方) pow(求次方)

其他库函数......

3、如何学习库函数?

那么我们如何才能学习并使用这些库函数呢?下面给到大家几个网站:

1) http://www.cplusplus        C++官网

2)http://en.cppreference       C语言官网

3) MSDN(Microsoft Developer Network)         这是微软给我们提供的一个软件,可自行百度下载

以上这些官网都是英文的,大家只要稍微有些英语基础都不难学会的,英语基础太差的话我们也可以用金山词霸或者有道云来翻译学习。

4、什么是自定义函数?

当然程序员在编写程序时,为了扩展程序的功能也需要自己编写一些函数,这些函数就是自定义函数。自定义函数和库函数一样有函数名、返回值类型和函数参数。不一样的就是这些函数是为了某一特定功能所设计的,给程序员一个很大的发挥空间。

四、函数的参数

函数的参数分为实参形参

1、实参就是实际参数  --真实传给函数的参数叫实参。实参可以是:常量,变量,表达式,函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。

2、形参就是形式参数  --形式参数就是函数名后括号内的变量,因为形式参数只有在函数调用时才会实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了,因此形参只在函数中有效!

 五、函数的调用

1、函数如何调用?

可以说,C 程序的全部工作都是由各式各样的函数完成的。由于采用了函数模块式结构,所以C语言易于实现结构化程序设计,使程序的层次结构清晰,便于程序的编写、阅读和调试。

在 C 语言中,所有函数的定义,包括主函数 main 在内,都是“平行”的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上将调用者称为主调函数,被调用者称为被调函数。函数还可以自己调用自己,称为递归调用。

此外,main 函数是主函数,它可以调用其他函数,但不允许被其他函数调用。C 程序的执行总是从 main 函数开始的(也是由 main 结束的),就算定义的函数放在 main 的前面,程序仍然从 main 开始执行。如果执行到函数调用则执行被调用的函数,完成函数调用后再返回到 main 函数继续往下执行,最后由 main 函数结束整个程序。一个 C 语言程序必须有且仅有一个主函数 main

2、函数调用的分类

1) 传值调用  --函数的形参和实参分别占有不同的内存区域,对形参的修改不会影响实参!

2)传址调用   --把实参的地址传给形参,建立真正的联系,改变形参的值也会改变实参的值!

六、函数的嵌套调用和链式访问

1、函数的嵌套调用  --函数和函数之间可以有机的组合的,但只能互相调用,不能嵌套定义!

 2、函数的链式访问  --把一个函数的返回值作为另一个函数的参数!

七、函数递归 

1、什么是函数递归?

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。所以递归要有两个要素,结束条件递推关系

2、使用递归函数有什么好处?

编写代码更简洁,代码逻辑更清晰,易懂。

3、递归和循环有什么关系?

循环能干的事,递归都能干;递归能干的循环不一定能干。但我们实际开发中能用循环解决的问题一般不用递归。

八、其他要注意的问题 

1、如果函数调用写在函数定义的前面,则必须加函数前置声明。(①告诉编译器即将出现的若干字母代表的是一个函数;②告诉编译器即将出现的若干个字母所代表的函数的形参和返回值的具体情况)

2、函数的声明是一个语句,末尾必须加分号。

3、对 库函数 的声明是通过 # include <库函数所在的头文件名.h>来实现的。

本节的内容就分享到这里了,下期我会仔细讲解C语言的 数组(重点) 内容!

更多推荐

C语言自学之路七(函数(重点)详解)