C使用strcpy修改字符**

C使用strcpy修改字符**,c,string,strcpy,C,String,Strcpy,我现在对指针有点困惑,有人能给我解释一下为什么试图用strcpy()更改char**会导致分段错误 void *change_string(char **string) { char *add = "Changed!"; strcpy(*string, add); return 0; } int main() { char *p = "Original-"; change_string(&p); printf("%s",p); } 您的指针p指向一个字符串文本,您可以在调

我现在对指针有点困惑,有人能给我解释一下为什么试图用
strcpy()更改
char**
会导致
分段错误

void *change_string(char **string) {
 char *add = "Changed!";
 strcpy(*string, add);
 return 0;
}

int main() {
 char *p = "Original-";
 change_string(&p);
 printf("%s",p);
}

您的指针
p
指向一个字符串文本,您可以在调用
strcpy(3)
时修改该字符串。修改字符串文字是未定义的行为。

我只是被赋予了“分段错误”
char*p=“Original-”
应该是
char*p=strdup(“Original-”)
,否则,修改
p
是未定义的行为