我遇到以下代码的问题,我无法弄明白?如果有人有任何想法,请告诉我。
我有两个全局变量:
char *newArgv[100], *s[MAXCHAR];
和一个功能
getword(char *w)
在我的main函数中,我通过说
来调用这个函数getword(s[num]);
在getword函数中,我有一个类似
的赋值w[index] = 'e';
问题在于最后一行代码。项目编译(显然)但程序崩溃。有人有什么想法吗?谢谢!
答案 0 :(得分:3)
您正在取消引用NULL指针。
s
是MAXCHAR
NULL指针的数组。 s[num]
返回num
指针 - 也是NULL。因此,在getword
内,w[index]
是非法的。
您需要动态分配内存:
for ( int i = 0 ; i < MAXCHAR ; i++ )
s[i] = malloc(MAX_WORD_LENGTH);
答案 1 :(得分:1)
s[num]
是char*
,其值为NULL
(因为全局变量为零初始化),因此当您取消引用它时,如w[index]
即s[num][index]
您取消引用一个NULL指针。