7.7 小结
本章讨论了一些与函数相关的相对高阶的内容,以前面几章的内容为基础,首先介绍了C++程序中经常出现的内存错误,这往往是很多初学者容易忽略的地方,结果让程序到处是漏洞,无从运行。对函数参数传递和返回机制进行了“重申”,理解“副本”的概念,不论是传值还是传指针调用,都存在“复制品”,不同的是传指针仅复制指针变量占据的4个字节(某些系统是两个字节),效率相比传值调用要高,尤其体现在大对象的参数传递时。函数指针的概念是对变量指针概念的推广,借此可以将函数名当做变量名看待,方便将函数作为其他函数的参数,组成函数数组,编写返回函数指针的函数,为了更清晰地理解函数指针的本质,本章介绍了typedef的用法。关于typedef,首先要体会其和#define的不同之处,typedef后面跟着一条完整的声明语句,声明语句中原来的变量名或函数名因为typedef的存在成为了该类型的“助记符”,相当于一种新的类型,借助typedef这一工具,函数指针的体系变得条理清晰,使用方便。
后面讨论了函数与数组、共用体、结构体(还有马上就要介绍的类对象)的关系,数组名等价于指向数组所占内存区域的常指针,因此,数组与指针是完全等价的,数组名也可以作函数参数。数组名作形参,指针作实参是种常见的用法。通过指针参数可以使函数返回多个值,对多个变量进行修改。不只是数组,通过头指针还可以在函数中实现对链表的管理和操作。对结构变量、共用体变量和类对象来说,函数存在值传递、指针传递和引用传递3种参数调用和函数返回机制,这与基本类型变量的参数调用和函数返回机制是完全一致的。
最后,本章简要介绍了一些编写函数的建议,随着类对象的引入,这方面的内容还会不断补充,不断完善。