全局变量

全局变量是编程术语中的一种,源自于变量之分。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。

例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int  a,b;  /*外部变量*/
void  f1()  /*函数f1*/
{
……
}
float  x,y;  /*外部变量*/
int  f2()  /*函数f2*/
{
……
}
main()  /*主函数*/
{
int  maomi();
……
} /*全局变量x,y作用域 全局变量a,b作用域*/
从上例可以看出a、b、x、y 都是在函数外部定义的 外部变量,都是全局变量。但x,y 定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。 a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。
全局变量是使用相同的内存块在整个类中存储一个值.
全局变量extern与static
extern在其他源程序中也可以使用;static只能在本程序中使用。

使用注意

编辑
全局变量的存在主要有以下一些原因:
1,使用全局变量会占用更多的内存(因为其 生命期长),不过在计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。
3,对于 局部变量名字空间污染,这个在不使用太多变量时是可以避免的。
4,当全局变量与局部变量重名的时候,起作用的是局部变量,全局变量被屏蔽掉。
5,还可以用extern在函数外对全局变量声明,使全局变量的作用域从声明处到文件的结束。
总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使其名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。
如下例所示声明全局变量:
Global y As String

使用

编辑
面向对象语言中的使用
在现代的 面向对象语言如Java,C++,C#,Ruby中,由于变量都是封装在类里面的,对别的类不可见,所以已经几乎完全抛弃了全局变量的概念。然而,可以通过把一个类定义为public static,把类 成员变量也定义为public static,使该变量在内存中占用固定、唯一的一块空间,来实现全局变量的功能。

PHP 超级全局变量

编辑
PHP中预定义了几个"超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 [1]  
PHP 超级全局变量列表:
  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION
变量 描述
$GLOBAL
$GLOBAL 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBAL 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
$_SERVER $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
$_REQUEST PHP $_REQUEST 用于收集HTML表单提交的数据。
$_POST PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
$_GET PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值