-1

我对以下代码有疑问,我无法弄清楚?如果有人有任何想法,请告诉我。

我有两个全局变量:

char *newArgv[100], *s[MAXCHAR];

和一个功能

getword(char *w)

在我的主要功能中,我通过说

getword(s[num]);

在 getword 函数中,我有一个任务,上面写着

w[index] = 'e';

问题出在最后一行代码中。该项目编译(显然),但程序崩溃。任何人有任何想法为什么?谢谢!

4

2 回答 2

3

您正在取消引用 NULL 指针。

s是一个MAXCHARNULL 指针数组。s[num]返回第numth 指针 - 这也是 NULL。所以在里面getwordw[index]是非法的。

您需要动态分配内存:

for ( int i = 0 ; i < MAXCHAR ; i++ )
    s[i] = malloc(MAX_WORD_LENGTH);
于 2012-10-14T22:32:40.260 回答
1

s[num]是一个char*带值的NULL(因为全局变量是零初始化的)所以当你取消引用它时,w[index]s[num][index]你取消引用一个 NULL 指针。

于 2012-10-14T22:33:00.147 回答