例1: 当我走串输入,它成功地给出了输出,写这一段代码:的printf的意外的输出在C
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",&str);
return 0;
}
情况2: 。另一方面,它抛出一个运行时错误的这个片段:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",str);
return 0;
}
我发现这个奇特的东西,想知道为什么会发生? 在此先感谢。
阅读** **字符串,** **指针,数组** **和**动态内存分配**以及**格式说明**。通过阅读关于*未定义的行为*,在蛋糕上添加樱桃。 – haccks
这里的东西缺少记忆,那就是'str'。 –
除了你没有为'str'分配内存,情况2是正确的实现。在使用之前添加一个'str = malloc(50);'或类似的东西。在情况1中你幸运,只是爆炸一些不属于你的记忆。 – eddiem