自己懂了,是字符指针变量指向的字符串常量的内容不可以被赋值。
# include<stdio.h>
main()
{
void copy(char *x,char *y);
char *a="I am student!";
char *b="you are a student!"; //程序编译没问题,运行时指出某内存不能为“read”。而把字符串数组b声明成下标形式
//char*p; // 即char b[20]=" ",另外声明指针变量 char *p;p=b,则正确。为什么呢?
//p=b; //
printf("%s\n%s\n",a,b);
copy(a,b);
printf("%s\n%s\n",a,b);
return 0;
}
void copy(char *x,char *y)
{
for(;*x;x++,y++)
*y=*x;
*y='\0';
}