1. 程式人生 > >區域性變數和全域性變數的差別

區域性變數和全域性變數的差別

全域性變數、靜態全域性變數、靜態區域性變數和區域性變數

全域性變數、靜態變數如果沒有手動初始化,則有編譯器初始化為0。

區域性變數是編譯器永遠不會初始化的變數,如果沒有手動初始化,區域性變數的值為隨機值。

在函式內使用全域性變數,一般應做全域性變數說明,只有在函式內經過說明的全域性變數才能使用。

但在一個函式之前定義的全域性變數,在該函式內使用可不再加以說明。

全域性變數說明:extern 型別說明符,變數名,變數名……;

在C++中,對變數的儲存型別有4種:

    auto、register、extern、static

例如:

static int a;                        a為靜態型別變數

auto char c;                       c為自動字元變數

static int a[2]={1,2};             a為靜態整型陣列

extern  int x;                          x為外部整型變數

作用域有6種:

全域性作用域 、 區域性作用域  、語句作用域、 類作用域  、名稱空間作用域  、檔案作用域

被static 關鍵字修飾過的變數具有檔案作用域。兩個不同的原始檔都定義了相同名字的靜態全域性變數,它們也是不同的變數。

分配記憶體空間

全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的靜態儲存區域

區域性變數存放在記憶體的棧區。