首頁 >後端開發 >C++ >為什麼「sizeof」會對字串文字、指標和字元陣列產生不同的結果?

為什麼「sizeof」會對字串文字、指標和字元陣列產生不同的結果?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 06:28:15826瀏覽

Why Does `sizeof` Produce Different Results for String Literals, Pointers, and Character Arrays?

字串文字的大小

給定的程式碼示範了 sizeof 運算子在不同類型的字串常數上的用法。輸出顯示字串文字的大小sizeof("f") 與指向字串文字的指標的大小(sizeof(foo)) 以及字元陣列的大小(sizeof(bar) )).

為什麼sizeof 計算字串文字的長度?

sizeof 運算子計算其運算元的大小位元組。對於字串文字,操作數是對應的字元陣列表示形式,包括終止空 (' ') 字元。這解釋了 sizeof("f") 的 2 輸出,因為它考慮了 'f' 和 ' ' 字元。

給 sizeof 時,字串文字是否有不同的類型?

沒有。字串文字的類型為 const char[N],其中 N 是字串的長度,包括終止空字元。但是,當將字串文字傳遞給 sizeof 運算子時,它會將字串視為 const char* 類型的表達式,該類型是指向字元的指標類型。這解釋了 sizeof(foo) 的 4 的輸出,因為它是 32 位元機器上指標的大小。

其他要點:

  • 傳遞給 sizeof 時,陣列不會衰減為指標。這解釋了 sizeof(bar) 的 2 輸出,因為 bar 是常數字元陣列。
  • sizeof 的字串文字參數的類型會影響結果。例如,sizeof("foo" 1) 在 32 位元和 64 位元機器上都會傳回 4,因為操作數是 const char* 類型的表達式。

以上是為什麼「sizeof」會對字串文字、指標和字元陣列產生不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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