我有以下程序要进行段错误。我无法理解为什么。请帮助我。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