C++變數作用域
阿新 • • 發佈:2019-01-22
C++變數作用域
作用域是程式的一個區域,一般來說有三個地方可以定義變數:
在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。
在函式引數的定義中宣告的變數,稱為形式引數。
在所有函式外部宣告的變數,稱為全域性變數。
我們將在後續的章節中學習什麼是函式和引數。本章我們先來講解宣告是區域性變數和全域性變數。
區域性變數
在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。它們只能被函式內部或者程式碼塊內部的語句使用。下面的例項使用了局部變數:
例項
#include<iostream>usingnamespacestd;intmain(){// 區域性變數宣告inta, b;
intc;
// 實際初始化
b = 20;
c = a + b;
cout << c;
return0;
}
全域性變數
在所有函式外部定義的變數(通常是在程式的頭部),稱為全域性變數。全域性變數的值在程式的整個生命週期內都是有效的。
全域性變數可以被任何函式訪問。也就是說,全域性變數一旦宣告,在整個程式中都是可用的。下面的例項使用了全域性變數和區域性變數:
例項
#include<iostream>usingnamespacestd;// 全域性變數宣告intg;
intmain(){// 區域性變數宣告inta, b;
// 實際初始化a = 10;
b = 20;
g = a + b;
cout
return0;
}
在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,區域性變數的值會覆蓋全域性變數的值。下面是一個例項:
例項
#include<iostream>usingnamespacestd;// 全域性變數宣告intg = 20;
intmain(){// 區域性變數宣告intg = 10;
cout << g;
return0;
}
當上面的程式碼被編譯和執行時,它會產生下列結果:
10
初始化區域性變數和全域性變數
當局部變數被定義時,系統不會對其初始化,您必須自行對其初始化。定義全域性變數時,系統會自動初始化為下列值:
資料型別 | 初始化預設值 |
---|---|
int | 0 |
char | '\0' |
float | 0 |
double | 0 |
pointer | NULL |
正確地初始化變數是一個良好的程式設計習慣,否則有時候程式可能會產生意想不到的結果。