C语言变量的作用域

来源:岁月联盟 编辑:zhu 时间:2009-02-22
变量只能在定义它或说明它的范围内使用,而在该范围之外是不可见的。按作用域的大小可分为程序级、文件级、函数级及复合语句级(块级)。其中程序级的作用域最大,属于程序级作用域的有外部变量,在构成程序的所有文件中都是可见的。属于文件级的作用域的有外部静态变量,外部变量和外部静态变量合称为全局变量或全程变量。属于函数级、复合语句级的变量称为局部变量或内部变量,首发新客网,www.xker.com。。
在下面的讨论中,我们会看到变量的作用域与变量的存储类别有关。
局部变量
(1)在一个函数内部定义的变量是局部变量,只能在函数内部使用。
(2)在主函数内部定义的变量也是局部变量,其它函数也不能使用主函数中的变量。
(3)形式参数是局部变量。
(4)在复合语句中定义的变量是局部于复合语句的变量,只能在复合语句块中使用。
(5)局部变量在函数被调用的过程中占有存储单元。
(6)不同函数中可以使用同名变量。在不同的作用域内,可以对变量重新进行定义。
全局变量
(1)在函数外部定义的变量是全局变量,其作用域是变量定义位置至整个程序文件结束。
(2)使用全局变量,可增加函数间数据联系的渠道。全局变量可以将数据带入在作用域范围内的函数,也可以将数据带回在作用域范围内的其它函数。
使用全局变量可让函数带回多个值,但一定要注意全局变量传递数据是数据传递的后门。全局变量在程序中任何地方都可以更新,使用全局变量会降低程序的安全性。
(3)提前引用外部变量,需对外部变量进行说明,或称申明。
(4)使用程序中非本程序文件的外部变量,也要对使用的外部变量进行同上的申明,或用文件包含处理。
(5)局部变量如与外部变量同名,则在局部变量的作用域内,外部变量存在,但不可见,外部变量的作用被屏蔽。
(6)全局变量在程序运行过程中均占用存储单元。
(7)在编程时,原则上尽量少用全局变量;能用局部变量,不用全局变量,要避免局部变量全局化。

图片内容