我有一个字符串数组,定义为如下所示的指向字符串的指针
char* dict[50];
dict[0][0]= 0;
printf("%d", dict[0][0]);
//这会产生细分错误,请有人解释为什么会这样吗?另外,如果我将dict [0] = 0设置为与dict [0] [0] = 0
相同答案 0 :(得分:3)
原因是您尚未分配任何内存。 char* dict[50]
是由50个元素长的char指针组成的数组:如果未将这些指针指向有效内存,则写入它们是未定义的行为,并且经常使程序崩溃甚至更糟。
答案 1 :(得分:2)
您有一个由50个指针组成的数组,这些指针均未初始化。
执行dict[0]=0
会将第一个数组元素设置为NULL
指针。
执行dict[0][0]=0
会取消引用未初始化的指针,或者,如果已经完成dict[0]=0
,则会取消引用NULL
指针。