首頁 > 後端開發 > C++ > 為什麼 C 中的「sizeof」會為字串文字、指標和陣列傳回不同的值?

為什麼 C 中的「sizeof」會為字串文字、指標和陣列傳回不同的值?

Patricia Arquette
發布: 2024-11-30 20:40:17
原創
921 人瀏覽過

Why Does `sizeof` Return Different Values for String Literals, Pointers, and Arrays in C  ?

Sizeof String Literal

在 C 中, sizeof 計算資料型態或運算式的大小。當應用於字串文字時,sizeof 計算文字的長度,包括終止空字元 (' ')。

了解輸出

提供的程式碼計算字串文字、const char* const 和 const char[] 的大小。使用GCC 編譯的32 位元作業系統上的輸出為:

sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
登入後複製

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

sizeof("f") 計算為2,因為字串文字由字元'f' 和終止null組成

sizeof 表達式中的類型

  • 字串文字「f」是一個大小為 2 的 const char 數組,包括 null 終止符。
  • 指標 foo 是一個 const char* const,它指向一個 const char 並且它本身const。
  • 陣列 bar 是大小為 2 的 const char[],包含 'b' 和 null 終止符。

警告:sizeof 的陣列

請注意,陣列在傳遞給 sizeof 時不會衰減為指標。因此,sizeof(bar) 正確傳回 2,而不是指標大小(在 32 位元作業系統上為 4)。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板