【发布时间】:2015-10-06 19:05:04
【问题描述】:
所以想象一下我有这个
main() {
int a = 5;
int *p;
printf("p: %d", (void*)p);
}
为什么我必须在 printf 语句中强制转换 *p?但如果我这样做......
p = &a;
printf("p: %d", *p);
这次我不用投了?
所以我的问题是我是否需要每次都将 void 转换为空指针?
【问题讨论】:
-
我对 C 生疏了,但我要试一试,说因为你用
p= &p;语句隐式初始化了指针? -
我的意思是 p = &a;
-
要打印指针的地址,您应该使用
%p而不是%d,%p格式需要转换(void *) -
您可能想阅读
void类型、如何定义指针、解引用运算符*和printf()以及它的转换说明符,如果那时任何问题仍然存在,请随时回来。选角也可能是您的兴趣所在。 -
顺便说一句,我在你的问题中没有看到任何空指针。