回覆列表
-
1 # 愛大海的聲音
-
2 # 使用者5329335765427
明顯i和y都是區域性變數,i初始值是0,但是y就是沒有初始化的區域性變數。
例如:
int main{int i = 0;
int y;
for(; i
//..........
}
}
擴充套件資料:
C++中被初始化全域性變數在編譯時儲存在data段中,而沒有被初始化的全域性變數儲存在bss段中。這樣儲存的理由是在data段的變數在編譯生成的檔案中需要分配空間儲存變數值,
而沒有初始化儲存變數(或初始化為0的靜態變數、全域性變數)其預設值為0,沒必要將這些值均為0的變數儲存在data段中,而採用bss段只是給未初始化的全域性變數和區域性靜態變數預留位置,bss段並沒有內容。
但是在程式執行時這些變數會佔用記憶體空間,所以可執行檔案必須記錄bss段中變數佔用空間的大小。
記憶體地址是不斷地被不同的程式重複使用的,一個個程式使用了這個地址會在這個地址上儲存資料,當程式結束時,資料不會立即清除,只是程式放棄這個地址。你定義一個變數,計算機分配地址,正好分配到這個地址上,但是你沒有初始化變數,也就是沒有重新整理這個地址上的已有資料,當你直接使用這個變數時,取到的值就是之前程式儲存在這個地址上的值。