<分区>
这里即使基地址相同,为什么输出不一样,请在第一个 printf 语句中描述工作是如何完成的??
#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}
<分区>
这里即使基地址相同,为什么输出不一样,请在第一个 printf 语句中描述工作是如何完成的??
#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}
最佳答案
在第一个 printf()
语句中,您有未定义的行为。任何事情都可能发生。在这种情况下,您很不走运,得到了您认为可以解释的结果(但实际上您不能:它是UB)。
在第二个printf()
语句中(忽略UB已经发生,整个程序无效),数组的第一个元素 c
被打印出来。
关于c++ - 这两种寻址方式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709151/