首頁 >後端開發 >C++ >C 中的指標是否具有固定大小,無論它們指向什麼資料型別?

C 中的指標是否具有固定大小,無論它們指向什麼資料型別?

Patricia Arquette
Patricia Arquette原創
2024-12-13 18:02:10348瀏覽

Do Pointers in C   Have a Fixed Size Regardless of the Data Type They Point To?

理解C 中的指針大小

問題出現了,「指針的大小是否取決於它指向的類型的大小,或者指針總是保持固定的大小?

在 C 中,指標通常具有固定的大小。在 32 位元可執行檔中,它們通常佔用 32 位元。但是,也存在例外情況,例如在舊版本的 Windows 中,必須區分 16 位元和 32 位元指標。

考慮以下程式碼片段:

int x = 10;
int *xPtr = &x;
char y = 'a';
char *yPtr = &y;

std::cout << sizeof(x) << "\n";
std::cout << sizeof(xPtr) << "\n";
std::cout << sizeof(y) << "\n";
std::cout << sizeof(yPtr) << "\n";

在此場景中,輸出如下:

  • sizeof(x):輸出變數x 的大小,其中對於32 位元可執行檔來說是4(假設int 是4 個位元組)。
  • sizeof(xPtr):輸出指標變數 xPtr的大小,通常如前所述保持固定,無論它指向什麼類型to.
  • sizeof(y):輸出字元變數y的大小,一般為單一1位元組
  • sizeof( yPtr):與xPtr類似,輸出的是指標變數yPtr的大小,與xPtr相同。

需要注意的是,雖然指標通常具有一致的大小,因此在程式碼中依賴此假設是不明智的。如果您的程式依賴特定大小的指針,請始終明確驗證它。

函數指標是一個值得注意的例外。它們的大小可能會根據特定係統或編譯器採用的呼叫約定而有所不同。有關函數指標的更多見解,請參閱「Jens」提供的回應。

以上是C 中的指標是否具有固定大小,無論它們指向什麼資料型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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