首頁 > 後端開發 > C++ > `sizeof` 如何以不同方式處理 C 中的字串文字、陣列和指標?

`sizeof` 如何以不同方式處理 C 中的字串文字、陣列和指標?

Linda Hamilton
發布: 2024-12-07 09:03:13
原創
153 人瀏覽過

How Does `sizeof` Differently Handle String Literals, Arrays, and Pointers in C  ?

字串文字的大小:了解字串常數的記憶體佔用

在C 中,字串文字是程式碼的組成部分,表示固定序列的字元。 sizeof 運算子對於理解這些字串文字的記憶體分配和佈局起著至關重要的作用。

問題 1:為什麼 sizeof 會計算字串文字的長度?

當套用於字串文字(例如「f」)時,sizeof 運算子會測量儲存在文字中的字元數,包括終止空白字元 (' ')。對於“f”,它計算儲存兩個字元所需的空間,因為它包括“f”和空終止符。

問題 2:字串文字是否有不同給定 sizeof 時的類型?

字串文字具有不同的類型:具有已知大小的字元數組,其中大小包括空終止符。此類型不同於 char*(指向字元的指標)和 char[](字元陣列)。當傳遞給 sizeof 時,字串文字的陣列類型會保留,導致結果反映陣列的大小而不是指標的大小。

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

  • sizeof("f"):傳回 2,因為它測量大小包含 'f' 和 ' ' 的字元陣列的大小。
  • sizeof(foo):傳回 4(在 32 位元系統上)或 8(在 64 位元系統上),因為它測量保存字串文字位址的指標變數 foo。
  • sizeof(bar):傳回 2,因為它測量包含字串的字元陣列的大小'b' 和 ' '。

記住:

  • 字串文字的型別:大小為 N 的 const char 陣列(其中 N 包含空終止符)。
  • 陣列在傳遞給大小。

以上是`sizeof` 如何以不同方式處理 C 中的字串文字、陣列和指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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