char x = 'G';
char *p = &x;
printf ("Address of x: %p\n", p);
printf ("Address of x: %p\n", (void*)p);
有人能告诉我到底是什么吗(void*)p
方法?我知道它是一样的p
,因为这也给了我地址x
,但是为什么写成(void*)p
?
C 标准是这样描述的%p
格式说明符printf
家庭功能(§ 7.21.6.2,第 12 段)
相应的参数应是指向 void 的指针。
指向不同类型的指针的内部表示可能不同,除了void *
and char *
指针,保证大小相同。但是,任何对象指针类型都可以转换为void *
。所以,要确保所有%p
变量被正确处理printf
,他们需要是void *
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)