作者a27417332 (等號卡比)
看板C_and_CPP
標題[問題] 關於函數指標的參數型別轉型
時間Sun Jun 25 22:33:32 2017
不好意思,想請教版上的大大:
在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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1498401215.A.09D.html
1F:推 littleshan: compatible type有嚴格的定義,基本上就是相同的type 06/25 23:13
2F:→ 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