指向void(void*
)的指針與任何其他指針類型兼容,並且可以容納任何其他指針類型。對於指向const void的指針也是如此(const void*
)。使用const void *而不是void *,對於任何類型
時間:
6.3.2.3,P2:對於任何限定符Q,一個指針指向一個非Q限定的類型可以被轉換爲一個指向 類型的q合格版本;存儲在原始值和轉換後的指針 中的值應相等。
因爲我允許這樣的:
int n = 0 ;
void* p = &n ;
我應該也被允許這樣的:
int n = 0 ;
const void* p = &n ;
這使我想起我的最後一點,這是這一切也應舉行用於複合文字。
void SomeFunc(const void* p) { printf("%p",p) } ;
SomeFunc(&(int){ 12345 }) ;
應由C標準定義(並允許)?
是的,我錯過了你有兩個功能。 – 2501 2014-10-07 16:33:46
是的,我的問題是從類型*和const類型*轉換爲const void *。 – 2501 2014-10-07 16:34:17
我想我必須相信你const int * const void *。 – 2501 2014-10-07 16:37:16