-1
編譯器(在這裏我正在考慮gcc,但我猜它可能是任何C編譯器)如何使用malloc返回的指針在使用前不需要轉換)關心變量來自哪裏? 爲什麼區分指針是否來自malloc? 它只是一些編譯器使用的優化,還是在C標準中提到的?不同於其他(void *)指針
編譯器(在這裏我正在考慮gcc,但我猜它可能是任何C編譯器)如何使用malloc返回的指針在使用前不需要轉換)關心變量來自哪裏? 爲什麼區分指針是否來自malloc? 它只是一些編譯器使用的優化,還是在C標準中提到的?不同於其他(void *)指針
不像其他(無效*)指針
其實C中沒有void *
需要鑄造,沒有什麼特別之處malloc
在這方面。只要你處理對象指針(即不是函數指針),你就可以自動轉換爲void *
。
,或者它在C標準
提到我們什麼時候需要有明確的轉換?標準這樣說:
6.5.4轉換操作符
涉及指針的轉換,不包括依據的6.5.16.1的 限制允許的其他,應當有明確的轉換來指定。
轉發至該節:
[...]一個操作數是一個指針,指向的對象類型,以及另一個是 指針空隙[的合格或不合格的版本.. 。]
所以你有它。 void *
沒有明確的演員要求。
顯示一些代碼來說明您的觀點。 –