我对以下代码有疑问,我无法弄清楚?如果有人有任何想法,请告诉我。
我有两个全局变量:
char *newArgv[100], *s[MAXCHAR];
和一个功能
getword(char *w)
在我的主要功能中,我通过说
getword(s[num]);
在 getword 函数中,我有一个任务,上面写着
w[index] = 'e';
问题出在最后一行代码中。该项目编译(显然),但程序崩溃。任何人有任何想法为什么?谢谢!
您正在取消引用 NULL 指针。
s
是一个MAXCHAR
NULL 指针数组。s[num]
返回第num
th 指针 - 这也是 NULL。所以在里面getword
,w[index]
是非法的。
您需要动态分配内存:
for ( int i = 0 ; i < MAXCHAR ; i++ )
s[i] = malloc(MAX_WORD_LENGTH);
s[num]
是一个char*
带值的NULL
(因为全局变量是零初始化的)所以当你取消引用它时,w[index]
即s[num][index]
你取消引用一个 NULL 指针。