變數的自動初始化

2021-08-11 02:36:18 字數 538 閱讀 9768

變數的初始化分為倆種型別:

1. 內建型別自動初始化。

程式中有乙個資料區,存放已初始化全域性變數,靜態變數和常量,所以會增加目標檔案的大小。

還有乙個未初始化資料區bss:存放未初始化全域性變數,但是在程式開始執行之前,這些資料會被初始化為0或者null。所以bss資料在目標檔案中只佔乙個符號位,編譯器不需要給變數分配空間,「初始化為0」是在鏈結階段才申請空間並初始化。區域性非靜態變數未顯式初始化是乙個隨機值

2. 類型別的自動初始化。

無論全域性還是區域性的,都會呼叫預設建構函式初始化。注意:當物件是全域性或者靜態區域性時,類的內建成員變數被初始化為0,而區域性作用域時,不會自動初始化。

注意: 區域性靜態變數跟全域性變數一樣很早就存在於全域性資料區。但當第一次執行到該函式,會檢測乙個位,來判斷是否已經初始化。

變數的自動初始化

1 1 include2 define const 100 3int p1 4int a 2 5 intb 6static intc 7main 8 輸出 const 100 a 0 0 b 0c 0 d 2514932 e 0f 0 1307813 p2 457819009 資料區存放已初始化的全...

重要 C C 變數的自動初始化

1 include define const 100 int p1 int a 2 int b static intc main 按 ctrl c 複製 輸出 const 100 a 0 0 b 0c 0 d 2514932 e 0f 0 1307813 p2 457819009 資料區存放已初始化...

變數初始化

int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...