C语言基础学习笔记(4):函数与防御式编程
图:塔克拉玛干沙漠
Guderian出品
C
语言函数的返回值类型,可以是数组以外的任意一种类型。在函数调用的过程中,实参和形参占用不同的内存空间,可以同名。
当函数定义在函数调用之后,
C89
标准默认函数返回值类型为int
,而C99
不再支持隐含的函数声明。把所有函数的定义都放在主函数的前面也不意味着不需要函数原型,因为不一定只有主函数会调用你定义的函数,还是有可能出现函数的调用出现在函数的定义之前的情况。
综合
3
和4
,应该在程序开头写清所有的函数原型。函数设计的基本原则:
(1)函数规模要小
(2)函数功能要单一
(3)函数接口定义要清楚
断言:
assert()
为在<assert.h>
中定义的宏,可把其“函数原型”视作void assert(int expression)
。(1)
expression
为真,pass(2)
expression
为假,中断程序可以用
if
语句代替断言,代价是程序编译后的目标代码体积变大,运行效率下降;使用断言便于在调试程序时发现错误,不影响程序执行效率。断言仅用于debug
版本调试程序,不能用作release
版本;换句话说只能用它确保预期不会发生的状况的确不会发生,而不能用它检查可能发生的状况是否发生。注意一个assert
只能检验一个条件。
【更多C语言系列】