複製鏈接
請複製以下鏈接發送給好友

全局變量

鎖定
全局變量是編程術語中的一種,源自於變量之分。
變量分為局部與全局,局部變量又可稱之為內部變量。由某對象或某個函數所創建的變量通常都是局部變量,只能被內部引用,而無法被其它對象或函數引用。
全局變量既可以是某對象函數創建,也可以是在本程序任何地方創建。全局變量是可以被本程序所有對象或函數引用。
中文名
全局變量
外文名
Global variables
也稱為
外部變量
變    量
函數外部定義
目    的
一般應作全局變量聲明

全局變量英文

Global variables
例如:
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在函數外對全局變量聲明,使全局變量的作用域從聲明處到文件的結束。
6,全局變量的優先度低於局部變量
總之,全局變量可以使用,但是全局變量使用時應注意的是儘可能使其名字易於理解,而且不能太短,避免名字空間的污染;避免使用巨大對象的全局變量。
如下例所示聲明全局變量:
Global y As String

全局變量使用

面嚮對象語言中的使用
在現代的面嚮對象語言Java,C++,C#,Ruby中,由於變量都是封裝在類裏面的,對別的類不可見,所以已經幾乎完全拋棄了全局變量的概念。然而,可以通過把一個類定義為public static,把類成員變量也定義為public static,使該變量在內存中佔用固定、唯一的一塊空間,來實現全局變量的功能。

全局變量超級全局變量

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"。
參考資料