全局變數

全局變數

全局變數是編程術語中的一種,源自於變數之分。

變數分為局部與全局,局部變數又可稱之為內部變數。由某對象或某個函式所創建的變數通常都是局部變數,只能被內部引用,而無法被其它對象或函式引用。

全局變數既可以是某對象函式創建,也可以是在本程式任何地方創建。全局變數是可以被本程式所有對象或函式引用。

基本介紹

  • 中文名:全局變數
  • 外文名: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) ,這意味著它們在一個腳本的全部作用域中都可用。 你不需要特別說明,就可以在函式及類中使用。
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"。

相關詞條

熱門詞條

聯絡我們