这两种类型的寻址有什么区别

时间:2014-05-17 08:20:01

标签: c++ c string character

这里即使基地址相同,那么为什么输出不一样,请描述如何在第一个printf语句中完成工作?

#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}

1 个答案:

答案 0 :(得分:4)

在第一个printf()语句中,您有未定义的行为。任何事情都可能发生。在这种情况下,你运气不好,得到了一个你认为可以解释的结果(但实际上你不能:它是 UB )。

在第二个printf()语句中(忽略 UB 已发生并且整个程序无效的事实),将打印数组c的第一个元素。