什么是函数
函数是C语言的模块,有较强的独立性,同时可以把函数理解为是一个子程序去帮助实现相应的一些功能这样的一个角色,它对于C语言来说是一个非常重要的部分。
C语言在函数的分类
2.1 库函数
库函数是C语言中已经定义了的函数,在平常使用的时候可以直接去使用。
C语言中常见的库函数可以分为:1.IO函数 2.字符串操作函数 3.字符操作函数 4.内存操作函数 5.时间/日期 函数 6.数学函数 7.其他库函数
例如:
库函数中的 “printf()“,但是要注意的是别忘记库函数对应的头文件名,它实现的内容是用于将格式化后的字符串输出到标准输出,最终效果是在屏幕上进行相应内容的显示。

2.2 自定义函数
自定义函数是指我们自己定义的函数,通过使用自定义函数来实现库函数无法实现的一些功能或运算,通过自定义函数,帮助我们更好的去完成编程中对于复杂功能或通过库函数无法实现功能的实现。
例如:

其中的sum函数就是人为定义的一个函数,去实现输入内容的求和.
函数的参数
3.1 形参
只有在函数被调用的过程中才实例化(分配内存单元),所以称为形参。形参当函数调用完成之后就自动销毁了,形参只有在函数中有效。
3.2 实参
实参可以是常量,变量,表达式,函数等,实参也可以理解为是传给函数的参数,但是无论为何种类型的量,在进行函数的调用时,它们必须有确定的值。
4.函数的调用
4.1 传值调用
函数形参与实参会分别占用不同的内存块(例如:在函数中当我们在内存中拿了一块空间用来存放一些数据,而我们此时把这些数据传给自定义函数,自定义函数也会在内存中拿一块空间去接收并存储传送过来的内容),此时对形参的修改并不会影响到实参。
例如:

把主函数中的num的数值传给自定义函数,此时自定义函数也开辟了空间去接收这个数值。
4.2 传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式,通过这种方式实现了使函数和函数外边的变量建立起真正的联系,同时通过形参可以找到实参。
例如:

5. 函数的嵌套调用和链式访问
5.1 嵌套调用
嵌套调用可以理解为,在一个函数中去引入另一个函数去使用,以此来达成其某种功能的实现。(例如:此时有ABC 3个函数,其中A函数中引入了B函数,而B函数中又引入了C函数)。
5.2 链式访问
链式访问可以理解为是把一个函数的返回值作为另外一个函数的参数。
例如:

strlen函数的返回值作为printf函数的参数去使用
6. 函数的定义和声明
6.1函数的声明
程序从上往下执行时,而此时函数在主函数之后,因此要一个在主函数之前的对函数的声明,以此对主函数进行提醒,提醒主函数存在这样的一个函数。在实际的代码编写中很少出现函数的声明,因为平常的书写习惯是自定义函数往往在主函数之前。
例如:

此时头文件名下面的就为一个函数的声明。
6.2 函数的定义
对一个函数去人为的定义。
例如:

7. 函数递归
程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
例如:

这个自定义函数中就采用了函数的递归