char s[]="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
如果是第一行是char *s="AAA";就不行,为什么?
char* s;
char p[]="nihao";
s=p;
printf("%s",s);
*s='N';
printf("%s",s);
这样也行,就是间接的改变了数组的值。你的意思,char * s="AAA"相当于 const char *s=“AAA”?
是的,用" "的字符串都是常量,不可以更改,虽然你用char * s 指向了字符串的首地址,但是只能读取里面的值,不能改的,用数组的话,char p[] =“ andnf" 是用这个字符串初始化数组,数组的首地址和字符串常量的首地址是不一样的。他们所在的内存空间不是一个
本回答被提问者采纳