函数中的每个局部变量(即在函数头部或者内部定义的变量)只在函数被调用时存在,在函数执行(被调用)完毕后消失。这也是其他语言通常把这里变量成为自动变量的原因。
除了自动变量外,还可以定义位于所有函数外部的变量,即外部变量。由于外部变量在可以再全局范围内访问,因此函数可以通过外部变量交换数据,而不必使用参数表。
外部变量必须定义在所有函数之外,且只能定义一次。定义后编译程序将为它分配存储空间。在每个需要访问外部变量的函数中,必须声明相应的外部变量。声明时可以用 extern 语句显示外部声明,也可以通过上下文隐式声明。这里的“上下文隐式声明”是指:在源文件中,如果外部变量的定义出现在使用它的函数之前,那么在那个函数中就没有必要使用extern 声明。在通常的做法中,我们可以把外部变量的定义都放在源文件的开始处,这样就可以省略extern 声明。
如果程序包含在多个源文件中,而某个变量在file1 文件中定义,在file2 和 file 3 中使用,那么文件file1和file2 就需要使用extern声明来建立该变量与其定义之间的联系。人们通常把变量和函数的extern 声明放在一个单独的文件中(即通常我们所说的头文件),并在每个源文件的开头使用 #include语句把所要用的头文件包含进来。例如标准库中的函数就是在类似于 的头文件中声明的。
外部变量的定义,分配存储单元, 外部变量的声明,不分配存储单元
在 ANSI C 中,如果要声明空参数表,必须使用关键字 void, 例如 int power(void)
在 C语言中,注释不允许嵌套。
本书 tcpl 练习 1-22 1-23 要动手做一下。
练习 1-24 可以对照《c 程序设计语言 习题解答》给出的代码分析一下