回覆列表
  • 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段中變數佔用空間的大小。

  • 中秋節和大豐收的關聯?
  • 男,戊寅,甲寅,戊子,癸丑,大家來探討下這八字如何?