【发布时间】:2016-08-24 09:19:37
【问题描述】:
char string = "default";
printf("The default String is: %s", &string);
scanf("%s", &string);
printf("You entered: %s", &string);
第一个 printf 语句将 &string 打印为 X(?_?。第二个 printf,在 scanf 语句打印出我输入的字符串之后。
既然&var操作符的意思是“var的内存地址”,那么&string为什么会打印出输入的字符串呢?当我尝试仅使用“字符串”时,为什么会出现分段错误?
【问题讨论】:
-
您的代码绝对充斥着未定义的行为:它的工作是偶然的。一个好的答案将是一个很长的答案。让我们拭目以待。
-
最适合的行不是有效的 C。因此很难推断后续行。
-
投票结束,因为注意编译器警告会完全消除这个问题的需要。
-
很难相信第一行甚至可以编译。