【发布时间】:2010-03-08 14:19:51
【问题描述】:
考虑代码
#include<stdio.h>
int main(void)
{
char* a;
scanf("%s",a);//&a and &a[0] give same results-crashes
printf("%s",a);
return 0;
}
为什么这段代码会导致崩溃?而这段使用字符数组的代码可以正常工作?
#include<stdio.h>
int main(void)
{
char a[100];
scanf("%s",&a[0]);//works fine
printf("%s",a);
return 0;
}
区别在于字符数组和指针吗?但我知道指针只指向第一个元素 &a[0] 应该可以正常工作,但上面的代码对于所有三个 a、&a 和 &a[0] 都崩溃了? 我要收集的主要内容是,如果我坚持只使用 scanf,我该如何输入字符指针? 如果我不清楚,我很抱歉。 在此先感谢:)
【问题讨论】:
-
请了解如何标记代码以使其可读。
-
对不起,我很新。我再次道歉
-
所以这不是作业,否则我会标记它
-
我建议更改两个示例中的数组/字符串名称,以便在回答时更容易区分它们。
-
是时候指出“数组并不总是等价于指针!”。