10.1 局部变量
把在函数体内声明的变量称为相对与函数的局部.
如
int f1(int n)
{ int a;
...
}
变量a就是局部变量.
局部变量拥有下列性质:
自动存储期限:变量的存储期限是在变量存储有效期内程序执行的部分.调用闭合函数时"自动"分配局部变量的存储单元,函数返回时收回分配.
程序块作用域:变量的作用域是可以参考变量的程序文本部分.局部变量拥有程序块作用域.从变量声明的点开始一致到闭合函数体的末尾.
在局部变量声明中放置static可以使变量从自动存储期限变为静态存储期限. 静态存储期限的变量拥有永久的存储单元,所以在整个程序的执行期间会保留变量的值.
10.2 外部变量
外部变量是声明在任何函数体外的变量.
外部变量(有时称为全局变量)具有性质:
静态存储期限:同声明为static的局部变量一样.
文件作用域:外部变量拥有文件作业域,从变量声明的点开始一直到闭合文件的末尾.结果是跟随在外部变量声明后的所有函数都可以访问它.
使用外部变量的利与弊
在多个函数必须共享一个变量时或者少数几个函数共享大量变量时,外部变量是很有用的.然而,在大多数情况下,通过形式参数进行函数交流比通过共享变量的方法更好.原因是:
- 在程序修改期间,如果改变外部变量(比方说改变他的类型),那么检查同一个文件中的每个函数,以确认该变化对函数的影响程度.
- 如果外部变量被赋予了错误的值,那么他可能很难确定这个有错误值的函数.就好像是处理聚集很多人的晚会上的谋杀案很难有方法缩小嫌疑犯范围一样.
- 很难在其他程序中服用依赖于外部变量的函数.依赖外部变量的函数不是独立的.为了在另一个程序中使用该函数,将不得不带上任何此函数需要的外部变量.
10.3 构建c程序
一半c程序按下列顺序编排
- #include指令
- #define指令
- 类型定义
- 外部变量声明
- 除main函数之外的函数原型
- main函数的定义
- 其他函数的定义
建议在每个函数定义前放置盒型注释 可以给出函数名 描述函数功能 讨论每个形式参数的含义 描述返回值和罗列任何的副作用
阅读(447) | 评论(0) | 转发(0) |