#include <stdio.h>
void main(){
char *str[]={"aa","bb"};
str[0][0]='h';
}
I receive a segmentation fault when executing this code. Does anyone know the reason?
Thanks in advance.
#include <stdio.h>
void main(){
char *str[]={"aa","bb"};
str[0][0]='h';
}
I receive a segmentation fault when executing this code. Does anyone know the reason?
Thanks in advance.
您正在分配一个由字符串常量占用的位置,这是一种未定义的行为。如果你知道你的字符串的最大长度,你可以这样做:
char ss[][3] = {"aa", "bb"};
这不是一个精确的等价物,但它应该可以工作。如果你不知道最大长度,或者不想在这里和那里浪费几个字节,你仍然可以通过更多的工作来完成它:
char aa[] = "aa";
char bbbb[] = "bbbb";
char *ss[] = {aa, bbbb};
您正在尝试更新文字常量,这是不允许的。这将导致未定义的行为。