指向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