char x = 'G';
char *p = &x;
printf ("Address of x: %p\n", p);
printf ("Address of x: %p\n", (void*)p);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我究竟(void*)p意味着什么?我知道它是一样的p,因为它也给了我地址x,但为什么写的是(void*)p?
Gov*_*mar 10
C标准%p说明了printf家庭功能的格式说明符(第7.21.6.2节,第12段)
相应的参数应该是指向void的指针.
指向不同类型的指针可能在内部表示方面有所不同,除了void *和char *指针之外,它们保证大小相同.但是,任何对象指针类型都可以转换为void *.因此,为了确保所有%p变量都被正确处理printf,它们必须是void *.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |