區域性變數和全域性變數的差別
阿新 • • 發佈:2019-01-31
全域性變數、靜態全域性變數、靜態區域性變數和區域性變數
全域性變數、靜態變數如果沒有手動初始化,則有編譯器初始化為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 關鍵字修飾過的變數具有檔案作用域。兩個不同的原始檔都定義了相同名字的靜態全域性變數,它們也是不同的變數。
分配記憶體空間
全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的靜態儲存區域
區域性變數存放在記憶體的棧區。