当我编译以下代码并运行它时代码运行
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char* array[1];
scanf("%s",array[0]);
return 0;
}
但以下代码无法运行。它显示了分段错误。是什么原因。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char* array[2];
scanf("%s",array[0]);
scanf("%s",array[1]);
return 0;
}
我的输入是第一种情况下的债券 詹姆士 第二次债券
答案 0 :(得分:0)
array[1]
和array[1]
是酉指针。因此,您将数据写入无效或未定义的位置。指针需要引用已分配的内存。
两个代码片段都不正确,但是关于一个单元化指针的事情,它可能包含一个合法地址或一个无效的地址,但无论如何都没有定义地址。
char array[2][64];
scanf("%63s",array[0]);
scanf("%63s",array[1]);