回答
的邏輯是,指針僅僅是內存地址。存儲地址爲的任何存儲在具有32位地址的機器中的實體幾乎肯定是4個字節。因此存儲的指針的存儲器地址是4個字節。因此指向一個指針的指針是4個字節。 ISO C標準沒有對此做出任何承諾。這幾乎是所有實現的結果。
是的......它將是4個字節......但它不能保證。
你的意思是「但它沒有保證。」? –
沒有一個規範說它必須是那樣,但是通常編譯器會做到這一點。 –
正確。指針通常具有固定的大小。在32位機器上,它們通常是32位(= 4字節)。
通常是的,在32位機器上的地址是4個字節。
如果你不想做假設最好的辦法是運行舊sizeof(p)
其他人已經提到,它肯定是32位或4個8位字節。
但是,根據硬件和編譯器的不同,它可能會更少或更多。
如果您的機器只能在32位邊界處將其存儲器作爲32位單元尋址,則必須具有更大的指針,以訪問和訪問每個32位存儲器的8位部分(chars
/bytes
)細胞。如果此處的編譯器決定不使用不同大小的指針,則所有指針(包括指向指針的指針)變爲34位長。同樣,如果程序非常小並且可以適應64KB,編譯器可能能夠將所有指針減少到16位。
- 1. 's'的存儲大小是未知的+指針指針
- 2. 指針的大小,指向C中指針的指針
- 3. 指針的大小
- 4. 存儲指針
- 5. C中指針的大小
- 6. 投射指向int的指針/存儲指向T的指針
- 7. 在NSButton中存儲指針
- 8. 在類中存儲指針
- 9. 在memcached中存儲指針
- 10. 指針存儲在C中
- 11. 將對象的指針直接存儲在指針向量中?
- 12. 在Raven中存儲具有父指針和子指針的樹
- 13. iOS存儲指針
- 14. 指針向量的大小
- 15. 2d指針的大小
- 16. 查找指針的大小
- 17. C - 字符的內存大小指針
- 18. 指針變量的大小被存儲在哪裏?
- 19. 衝突指針的地址,並存儲在指針
- 20. 的malloc內存的指針的指針
- 21. 將指針或指針數組存儲在動態數組中
- 22. 存儲指向地圖鍵的指針
- 23. 分配的存儲器,用於指針
- 24. Delphi中指針的指針
- 25. 指針的指針的指針
- 26. 指針的指針
- 27. 指針的指針
- 28. 指針的指針
- 29. 使用指針:指針指針指針
- 30. 指向存儲在uint64_t中的內存位置的指針
是的,至少通常是這樣(也就是說,可能會有一些奇怪的球系統通常被認爲是「32位」,但它不是真實的,但如果是這樣的話,這是非常模糊的)。 –
任何它不應該的原因? – krlmlr
的原因可能不是由於某種原因,編譯器可能會根據處理器體系結構嘗試做一些狡猾的事情,也就是說,它可能是8個字節。 –