函数的一般形式:
类型说明可以是任何数据类型,包括vOid.
返回语句。
return两个作用:
- 结束当前函数,调用者获取程序的控制权。
- 将计算结果传递给调用者。
程序结束两种情况: - 代码结束
- return
作用域规则
范围划分
局部变量
作用函数体内。
全局变量。
作用域是整个源程序文件,文件中的所有函数和程序块都可以引用。
生命周期划分
动态存储变量。
默认或者AUTO。
静态存储变量
sttic修饰符
函数退出后,变量被保留在内存,再次执行同一函数会得到与上次退出时候相同的数值。
函数的调用和参数
- 形式参数是接口的目的地。
- 实参是数据的来源地。
递归
递归函数是能够直接或通过另一个函数间接调用自身的函数,调用自身的方法称为递归调用。
实现问题。
- 参数和通用函数。不应该把函数建立在全局变量上,函数的数据应该从参数中获取。
- 效率。调用函数,会在内存中建立栈的数据结构,反复嵌套调用,开销很大。函数的调用结构应趋向于扁平的结构。
函数库和文件
编译器编写小的文件效率高,也便于开发者阅读,所以应该拆分。
分类组织文件
注意:(C语言程序开发的)
主文件控制程序的主流程, 而具体功能放在其他文件里。
如和利率相关的函数说明放在了:rate_compute.h中。该文件使用编译预处理命令判断自己是否被包含了,如果没有则进行函数说明。避免多次。
函数定义部分和头文件名字保持一致,rate_compute.c需要使用#include包含,这样当主函数也使用了#inclucde 该文件,就可以使用这些函数。