關於全域變數與區域變數差異補充

關於全域變數與區域變數差異補充

我們在宣告一個全域變數(global)時,該變數會"自動"初始化為0;但若在區域中宣告一個變數,但沒有初始化,稱為未定義行為,區域變數一定要避免掉未定義行為,以免出現不可預期的問題

全域變數(global)【i】 + 區域變數(local)【j,k,a,b】

int i;

int main(){
int j;
int k=0;
int a,b;
a=1;
b=a+k;
return 0;
}
全域變數i會自動初始化為0。
區域變數j宣告後無初始化,是未定義行為,應該要像變數k或者變數a一樣給予初始化,或者像b一樣給予數值,但要注意不要在未給予數值或初始化前使用此變數內的資料,例如上述的j,建議不要使用變數內容,除非給予數值或者初始化以後即可以開始利用。
a=j+b;//j未初始或定義(給予數值等等),使用不正確有機率導致程式的不正確性。
另外,當宣告全域變數時,我們使用static來宣告全域變數,此全域變數只能單獨在這一個檔案使用。(因為程式可能會分為多個檔案工作)

留言