2016-07-26 85 views
1

我現在有點困惑與指針,有人可以向我解釋爲什麼試圖更改char**strcpy()導致segmentation faultC修改char **與strcpy

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

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

我被簡單給出爲「段錯誤」 – tim

+0

char * p =「Original-」'應該是'char * p = strdup(「原始 - 」)',如果不是,修改'p'是*未定義的行爲* – dvhh

回答

1

你的指針p指向一個字符串文字,當你調用strcpy(3)您修改字符串。修改字符串文字是未定義的行爲。