#include <stdio.h>
void main(){
char *str[]={"aa","bb"};
str[0][0]='h';
}
执行此代码时收到分段错误。有谁知道原因?
提前致谢。
答案 0 :(得分:4)
您正在分配一个由字符串常量占用的位置,一个未定义的行为。如果你知道字符串的最大长度,你可以这样做:
char ss[][3] = {"aa", "bb"};
这不是一个精确的等价物,但应该有效。如果您不知道最大长度,或者不想在这里和那里浪费几个字节,您仍然可以通过更多的工作来完成它:
char aa[] = "aa";
char bbbb[] = "bbbb";
char *ss[] = {aa, bbbb};
答案 1 :(得分:3)
您正在尝试更新文字常量,这是不允许的。这会导致未定义的行为。