【发布时间】:2015-11-04 20:20:43
【问题描述】:
#include<stdio.h>
int main() {
char str[]={'1','2','3'},*p;
p=str;
printf("%c",p);
return 0;
}
输出-@。
不应该是打印 1 还是 %c 可能是原因?
【问题讨论】:
-
它将打印
str地址转换为char的字符表示。就是这样。 -
p指的是指针,即它的内存地址。您应该取消引用它以获取它所指向的内容:*p -
好的,如果我使用 %s 那么它会打印 123 对吗???
-
@EugeneSh.:实际上,由于
printf()是可变参数,当参数类型不匹配时,行为是未定义的(存在一些例外,但char */int没有)。 -
@EOF,好吧,还没有那么深:)