C编程,操作字符串时出现分段错误

时间:2019-03-31 11:19:30

标签: c string pointers char segmentation-fault

我有一个字符串数组,定义为如下所示的指向字符串的指针

char* dict[50];
dict[0][0]= 0;
printf("%d", dict[0][0]);

//这会产生细分错误,请有人解释为什么会这样吗?另外,如果我将dict [0] = 0设置为与dict [0] [0] = 0

相同

2 个答案:

答案 0 :(得分:3)

原因是您尚未分配任何内存。 char* dict[50]是由50个元素长的char指针组成的数组:如果未将这些指针指向有效内存,则写入它们是未定义的行为,并且经常使程序崩溃甚至更糟。

答案 1 :(得分:2)

您有一个由50个指针组成的数组,这些指针均未初始化。

执行dict[0]=0会将第一个数组元素设置为NULL指针。

执行dict[0][0]=0会取消引用未初始化的指针,或者,如果已经完成dict[0]=0,则会取消引用NULL指针。