我有以下程序要進行段錯誤。我無法理解爲什麼。請幫助我。C指針,seg故障
int main(){
char *a="String One", *b="String Two";
while(*a++=*b++);
return 0;
}
爲了分析它,我刪除了while循環並使其更簡單。它仍然給段錯誤!
int main(){
char *a="String One", *b="String Two";
*a++=*b++;
return 0;
}
但是這個工作。我的意思是沒有段錯誤!
int main(){
char *a="String One", *b="String Two";
*a++;
*b++;
return 0;
}
回覆Luchien:
我其實是試圖效仿的strcpy。像這樣的東西。現在,我知道字符串文字是隻讀的,我可以得到這個工作。謝謝你們。
main(){
char x[10];
char *xx = x;
char *y = "Hello";
char *t=x, *f=y;
while(*xx++ = *y++);
printf(" %s ...%s \n",t,f);
}
未定義的行爲**更改**字符串文字。 http://c-faq.com/strangeprob/strlitnomod.html – cnicutar 2012-03-06 07:34:28
還有未定義的行爲在兩個序列點之間寫入兩次相同的變量。 – martiert 2012-03-06 07:46:42