这个char * []赋值有什么问题?

时间:2012-10-14 22:30:40

标签: c arrays pointers char

我遇到以下代码的问题,我无法弄明白?如果有人有任何想法,请告诉我。

我有两个全局变量:

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

和一个功能

getword(char *w)

在我的main函数中,我通过说

来调用这个函数
getword(s[num]);

在getword函数中,我有一个类似

的赋值
w[index] = 'e';

问题在于最后一行代码。项目编译(显然)但程序崩溃。有人有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

您正在取消引用NULL指针。

sMAXCHAR 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指针。