【发布时间】:2017-06-26 13:14:30
【问题描述】:
我有这个代码:
#include <stdio.h>
#include <string.h>
void main(){
printf("%p");
}
这是输出:
0x7ffdd9b973d8
我知道%p 代表指针,当使用它作为例子时
#include <stdio.h>
#include <string.h>
void main(){
int i = 0;
printf("%p", i);
}
它返回i的指针地址。但我的问题是,当不在 printf 函数中添加任何其他参数时,它会返回什么 printf("%p")
【问题讨论】:
-
printf("%p", i);不打印i的地址。你需要printf("%p", (void *) &i);。 -
我认为这只是内存中的一个随机地址。好吧,不像生成的那样随机,但不能直接预测。基本上是垃圾。
-
@ant 你需要
(void *)吗? -
@cullub:学究式,是的。
printf需要一个void *指针。[signed/unsigned] char *指针可以在没有强制转换的情况下使用,因为它保证与void *具有相同的表示形式。但是int *可以有不同的表示,这就是为什么它必须转换为void *。 -
@cullub Yes。指针可能有不同的对象表示。
标签: c printf format-specifiers