首頁  >  文章  >  後端開發  >  C 中所有指標的大小都相同嗎?深入探討 C 中指針大小的複雜性和細微差別。

C 中所有指標的大小都相同嗎?深入探討 C 中指針大小的複雜性和細微差別。

Linda Hamilton
Linda Hamilton原創
2024-10-26 09:36:03935瀏覽

Do all pointers in C   have the same size? A deep dive into the complexities and nuances of pointer size in C  .

C 中所有指標的大小是否相同?

C 中所有指標是否具有相同大小的問題一直受到辯論。雖然一些消息來源聲稱指標始終具有相同的大小,但其他消息來源則認為不同的指標類型可以具有不同的大小。

C 標準中的保證大小

C 標準明確保證:

  • void 與char
  • void
  • 具有相同的大小。 T const、T volatile 和 T const volatile
  • 與 T
  • 具有相同的大小。
指向具有相同底層類型的枚舉類型的指標具有相同的大小。

實際大小注意事項

    實際上,指向所有類別類型和函數類型的指標通常具有相同的大小。這是因為:
  • 編譯器必須在不知道其實現的情況下確定指向不完整類別類型的指標的大小。
reinterpret_cast 可用於在不同函數指標類型之間進行轉換而不會遺失資訊。

例外:分段架構

在分段架構上,近指標和遠指標可能有不同的大小。

原因允許非統一大小?

C 標準從技術上來說允許指針類型對於病理情況具有不同的大小。然而,在實際應用中,這種情況很少見,並且沒有顯著的好處。

結論

雖然很容易假設 C 中的所有指針具有相同的大小,標準不保證這一點。然而,在大多數實際場景中,所有指標都將具有相同的大小,如上面的討論所述。

以上是C 中所有指標的大小都相同嗎?深入探討 C 中指針大小的複雜性和細微差別。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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