【发布时间】:2016-11-30 22:07:21
【问题描述】:
案例 1: 当我接受字符串输入时,它成功地给出了输出,写了这段代码:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",&str);
return 0;
}
案例 2: 另一方面,它会为此 sn-p 引发运行时错误:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",str);
return 0;
}
我发现这件事很奇怪,想知道为什么会这样…… 提前致谢。
【问题讨论】:
-
阅读字符串、指针、数组和动态内存分配以及格式规范。阅读有关未定义行为的内容,锦上添花。
-
这里的东西内存不足,那就是
str。 -
除了您没有为
str分配内存这一事实之外,案例2 是正确的实现。在使用之前添加str = malloc(50);或类似名称。在情况 1 中你很幸运,只是爆破了一些不属于你的记忆。 -
暂时假设案例 1 是正确的。是什么让您认为在案例 2 中您不需要使用
&- 案例 1 和案例 2 不可能都是正确的。你不能一边走一边弥补。您需要使用正确的类型。 -
谢谢大家,感谢您的回答,我会改正自己的
标签: c pointers char-pointer