結構鑄字
回答
我建議使用union:
struct {
union {
int a;
char *ptr;
} u;
char b;
} st;
根據該sizeof(int) == sizeof(char*)
持有的假設,您可以通過使用st.u.a
或st.u.ptr
訪問內存中的值相同。
對於什麼值得,請考慮使用size_t
而不是int
作爲a
字段的類型。這樣,您的代碼在64位版本中仍然是正確的(其中int
可能仍然是32位,但指針是64位)。
標準C不接受匿名工會。 GCC確實。 – 2011-05-30 07:10:37
@Jonathan:謝謝你澄清這一點;我修復了代碼示例。對於它的價值,Microsoft Visual Studio 2008(我現在可以訪問的編譯器)也樂意接受C代碼中的匿名聯合。 – 2011-05-30 13:03:18
標準C現在接受匿名聯合(C11!) – u0b34a0f6ae 2013-01-22 22:47:27
你想要什麼叫unions。
- 1. 鑄字字符的結構類型
- 2. C:鑄造新的結構VS鑄造給定結構
- 3. 鑄字的argv到結構型
- 4. 錯誤而鑄字結構爲整數
- 5. 從LPVOID鑄造結構 - C
- 6. 結構之間的鑄造?
- 7. 鑄造結構構件的類型
- 8. 將通用結構鑄造成其他結構
- 9. C結構數組初始化鑄造
- 10. 鑄造結構轉換成int
- 11. 在Swift中將結構鑄造成NSUserDefaults?
- 12. C++鑄造的問題(結構)
- 13. 指針 - 鑄造結構指針+ Malloc
- 14. 鑄造void指針,以結構
- 15. 的malloc不是鑄造結構
- 16. 鑄造結構如何工作?
- 17. 奇怪的鑄造問題TM結構
- 18. 結構鑄造時信息丟失
- 19. 鑄造結構指針到void
- 20. 使用變量鑄造C結構
- 21. 麻煩從int鑄造結構
- 22. 鑄字結構隱藏實現VS平普爾 - 成語
- 23. 從更大的數據類型(結構)鑄造到更小的結構
- 24. 字符* []結構
- 25. 鑄字在Javascript
- 26. 鑄字翻番
- 27. 字典鑄造
- 28. 鑄字的ArrayList
- 29. 鑄造字典
- 30. 結構實例與 「結構」 關鍵字
在這種情況下,它們不應該是兩個不同的結構嗎? – Naveen 2011-05-30 06:36:55
在發佈任何代碼或代碼相關的關鍵字之前,使用代碼部件作爲花括號出現。 – 2011-05-30 06:37:17
請注意:在大多數64位平臺上,你可能會遇到一個'int'不足以容納'char *'或任何其他指針類型,所以使用相同的字段來保存這兩種類型的值可能會贏得結果不好。 – 2011-05-30 06:39:27