看板 C_and_CPP 關於我們 聯絡資訊
不好意思,想請教版上的大大: 在C99以後,以這個問題來說: https://goo.gl/aeLCxN 為甚麼void*是不相容於struct my_struct*? 在C中,void*不是可以和非函數指標互轉,並保證在轉回去以原型別解引用時會正確? 但這邊好像並不是這個意思? 自己在網路上找了一些關鍵字,但還是不能理解這個結論的原因。 還希望有大大能指點一下m(_ _)m 另外,在C++中,void*轉到T*(不為函數指標)是需要顯式轉換的, 而T*(不為函數指標)轉到void*是可以被隱式轉換的。 想問下這個規則是標準的哪裡?還是我有誤解的地方? 不好意思了,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.13.151 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1498401215.A.09D.html
littleshan: compatible type有嚴格的定義,基本上就是相同的type 06/25 23:13
littleshan: 「可以互轉」並不表示它們是compatible type 06/25 23:13
原來如此! 另外想再問一下這篇:https://goo.gl/VnXBVn 為甚麼這篇底下說如果滿足那個轉型的假設,就可以讓這個轉型的行為符合預期? 印象中任何非函數指標轉到char*,都是可行的。 void*和char*的對齊要求有可能不一樣嗎? (參考自這篇:https://goo.gl/UyQr15) 還麻煩各位大大了,感激不盡m(_ _)m ※ 編輯: a27417332 (36.225.123.68), 06/26/2017 14:06:04