C 和 C 語言中靜態變數和全域變數何時初始化?
在 C 和 C 語言中,靜態變數和全域變數有不同的初始化過程。與 C 不同,靜態和全域物件在主函數之前進行構造,C 缺乏這樣的初始化。
C 中的初始化時序
在 C 程式碼中,全域變數如global_int1 和 global_int2 沒有明確初始化程序,由系統初始化為 0。但是,靜態變數 static_int1 和 static_int2 未初始化。它們的值在程式中明確設定之前保持不確定。
C 中的初始化值
具有明確初始化器的變數(例如值為5 的global_int1)被指派其值由編譯器作為程式碼翻譯的一部分。該值儲存在可執行檔的資料段中。
程式執行時,系統將執行檔載入到記憶體中,包括資料段。然後為全域變數分配記憶體並使用資料段中儲存的值進行初始化。
C 中的初始化階段
C 遵循靜態的三階段初始化過程具有命名空間範圍的物件:
C 中的記憶體管理
C 中的靜態初始化值儲存在執行檔的資料段中。與 C 類似,這些值在程式執行期間載入到記憶體中並分配給相應的變數。
沒有初始化器或動態初始化的變數在 bss 段中分配記憶體。系統在程式執行前將這些變數初始化為0。
以上是C 和 C 中靜態變數和全域變數的初始化過程是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!