首页 理论教育全局变量的使用及其影响

全局变量的使用及其影响

【摘要】:全局变量不属于哪一个函数,它属于整个源程序文件。在函数中使用全局变量,一般应作全局变量说明。例5.10外部变量与局部变量同名。如果同一个源程序文件中,外部变量与局部变量同名,则在局部变量的作用范围内,局部变量有效,外部变量被“屏蔽”。全局变量使函数的通用性降低,因为函数在执行时要依赖于其所在的外部变量。使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。

全局变量也称为外部变量,它是在函数外部定义的变量。全局变量不属于哪一个函数,它属于整个源程序文件。其作用域是从定义变量的位置开始,到本程序文件结束。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用,全局变量的说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。例如:

从上例可以看出a,b,x,y都是在函数外部定义的外部变量,都是全局变量。但x,y定义在函数f1()之后,而在函数f1()内又无对x,y的说明,所以它们在函数f1()内无效。a,b定义在源程序最前面,因此在函数f1(),f2()及main()函数内不加说明也可使用。

例5.9 输入正方体的长宽高l,w,h,求正方体的体积及三个面x*y,x*z,y*z的面积。

例5.10 外部变量与局部变量同名。

如果同一个源程序文件中,外部变量与局部变量同名,则在局部变量的作用范围内,局部变量有效,外部变量被“屏蔽”(即它不起作用)。(www.chuimin.cn)

建议不在必要时不要使用全局变量,因为:

(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟存储单元。

(2)全局变量使函数的通用性降低,因为函数在执行时要依赖于其所在的外部变量。如果将一个函数移到另一个文件中,还必须将有关的外部变量及其值一起移过去。当该外部变量与其他文件的变量同名时,就会出现问题,降低了程序的可靠性和通用性。在程序设计中,在划分模块时要求模块的“内聚性”强,与其他模块的“耦合性”弱,即独立性强关联性弱。

(3)使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。