从上例可以看出a、b、x、y 都是在函数外部定义的
外部变量,都是全局变量。但x,y 定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。 a,b定义在
源程序最前面,因此在f1,f2及main内不加说明也可使用。
全局变量是使用相同的内存块在整个类中存储一个值.
1,使用全局变量会占用更多的
内存(因为其生命期长),不过在
计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2,使用全局变量程序
运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。
总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使其名字易于理解,而且不能太短,避免
名字空间的污染;避免使用巨大对象的全局变量。
在现代的
面向对象语言如
Java,C++,C#,
Ruby中,由于变量都是封装在类里面的,对别的类不可见,所以已经几乎完全抛弃了全局变量的概念。然而,可以通过把一个类定义为public static,把类
成员变量也定义为public static,使该变量在内存中占用固定、唯一的一块空间,来实现全局变量的功能。
PHP中预定义了几个“
超级全局变量”(superglobals) ,这意味着它们在一个脚本的全部
作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。