分配char - 分段错误

时间:2012-04-17 15:46:48

标签: c

#include <stdio.h>

void main(){
    char *str[]={"aa","bb"};
    str[0][0]='h';
}

执行此代码时收到分段错误。有谁知道原因?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您正在分配一个由字符串常量占用的位置,一个未定义的行为。如果你知道字符串的最大长度,你可以这样做:

char ss[][3] = {"aa", "bb"};

这不是一个精确的等价物,但应该有效。如果您不知道最大长度,或者不想在这里和那里浪费几个字节,您仍然可以通过更多的工作来完成它:

char aa[] = "aa";
char bbbb[] = "bbbb";
char *ss[] = {aa, bbbb};

答案 1 :(得分:3)

您正在尝试更新文字常量,这是不允许的。这会导致未定义的行为。