理解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";
在此場景中,輸出如下:
需要注意的是,雖然指標通常具有一致的大小,因此在程式碼中依賴此假設是不明智的。如果您的程式依賴特定大小的指針,請始終明確驗證它。
函數指標是一個值得注意的例外。它們的大小可能會根據特定係統或編譯器採用的呼叫約定而有所不同。有關函數指標的更多見解,請參閱「Jens」提供的回應。
以上是C 中的指標是否具有固定大小,無論它們指向什麼資料型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!