[問題] 關於函數指標的參數型別轉型

看板C_and_CPP (C/C++)作者 (等號卡比)時間8年前 (2017/06/25 22:33), 8年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/2 (看更多)
不好意思,想請教版上的大大: 在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

06/25 23:13, , 1F
compatible type有嚴格的定義,基本上就是相同的type
06/25 23:13, 1F

06/25 23:13, , 2F
「可以互轉」並不表示它們是compatible type
06/25 23:13, 2F
原來如此! 另外想再問一下這篇:https://goo.gl/VnXBVn 為甚麼這篇底下說如果滿足那個轉型的假設,就可以讓這個轉型的行為符合預期? 印象中任何非函數指標轉到char*,都是可行的。 void*和char*的對齊要求有可能不一樣嗎? (參考自這篇:https://goo.gl/UyQr15) 還麻煩各位大大了,感激不盡m(_ _)m ※ 編輯: a27417332 (36.225.123.68), 06/26/2017 14:06:04
文章代碼(AID): #1PJyc_2T (C_and_CPP)
文章代碼(AID): #1PJyc_2T (C_and_CPP)