要点总结
1. 函数
- 函数是完成特定任务的独立程序代码单元。
- 使用函数的意义:
- 可以省去编写重复代码的苦差。
- 让程序更加模块化,从而提高可读性,方便后期的修改和完善。
- 分析程序
- 函数原型(function prototype) 告诉编译器某函数的类型;(一般而言,它指明了函数的返回值类型和函数接受的参数类型)
- 函数调用(function call) 表明在此处执行函数;
- 函数定义(function definition) 明确地指定了函数要做什么。
- 参数
- 形式参数是被调函数中的变量,实际参数是主调函数赋给被调函数的具体值。
- 形式参数是局部变量。
- 形式参数是函数定义的函数头中声明的变量,实际参数是出现在函数调用圆括号中的表达式。
2. 递归
- 定义: 函数自己调用自己,这种调用过程称为递归。
- 基本原理
- 每级函数调用都有自己的变量。
- 每次函数调用都会返回一次。
- 递归函数中位于递归调用之前的语句,均按被调函数的顺序执行。
- 递归函数中位于递归调用之后的语句,均按被调函数相反的顺序执行。
- 递归函数中必须包含能让递归调用停止的语句。
- 尾递归
- 递归调用置于函数末尾。这是最简单的递归形式,相当于循环。
- 递归和循环都可以时,优先使用循环。
- 因为每次递归都会创建一组变量,所以递归占用的内存多。而且每次递归调用都会把创建的一组新变量放在栈中。
- 每次函数调用要花一段时间,所以递归的执行速度比较慢。
3. 查找地址: &运算符
- 指针用于存储变量的地址, 是一个值为内存地址的变量。
- 如果主调函数不使用return返回的值,则必须通过地址才能修改主调函数中的值。
- 用return语句只能把被调函数中的一个值传回主调函数。
- & 求地址。
- * 解引用。找出存储在指针所指向的值。
- 声明指针变量时必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间。另外,程序必须知道存储在指定地址上的数据类型。
复习题
- 形参和实参的区别。
- 形式参数是定义在被调函数中的变量,实际参数是出现在函数调用中的值,该值被赋给形式参数。可以把实际参数看作是在函数调用时初始化形式参数的值。