首頁  >  文章  >  後端開發  >  C 中靜態變數和全域變數如何初始化?

C 中靜態變數和全域變數如何初始化?

DDD
DDD原創
2024-11-08 07:05:021064瀏覽

How are Static and Global Variables Initialized in C  ?

C 中靜態與全域變數的初始化

在C 中,具有命名空間作用域的靜態與全域物件的初始化方式與全域物件的初始化方式與全域物件的初始化方式C 中不同。全面解釋:

初始化階段:

C 分三個階段初始化這些變數:

  1. 零初始化:設定所有靜態物件到初始化:設定所有靜態物件到初始化0。
  2. 靜態初始化:初始化具有靜態初始化器的物件。
  3. 動態初始化:初始化需要執行程式碼執行初始化的物件(非靜態物件)。

給定變數的初始化:

在您的程式碼片段中:

  • global_int1 在靜態初始化期間初始化為靜態初始化期間初始化為5。
  • global_int2 是零初始化期間零初始化。
  • 靜態初始化期間 static_int1 初始化為 4。
  • 零初始化期間 static_int2 零初始化。

儲存和初始化值的管理:

在編譯期間,初始化值儲存在執行檔的「資料」段中,除非它們是常數。在這種情況下,它們被放置在“text”段中。

系統將「data」段載入記憶體中,使用靜態初始化器初始化靜態變數。沒有初始化器或動態初始化器的變數放置在“bss”段中,該段在程式碼執行之前被系統清除。

C 11 的附加說明

C 11引入了constexpr,允許一些使用者定義的函數進行靜態初始化。也引入了線程局部變量,這使得初始化過程更加複雜。

以上是C 中靜態變數和全域變數如何初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn