C语言里的字符串实际上就是char组成的数组,所以#include intmain(void){charstr[4]="abc";for(size_ti=0;i<3;i++){printf("%c\n",str[i]);}return0;}是可行的,正常输出没啥问题。因为双引号""括起来的字符串实际上返回的是这个字符串第一个字符的地址,所以#include intmain(void){char*str;str="abc";//把这个字符串的首地址赋给strfor(size_ti=0;i<3;i++){printf("%c\n",str[i]);}return0;}也是可行的。但是为什么:#include intmain(void){charstr[4];str="abc";for(size_ti=0;i<3;i++){printf("%c\n",str[i]);}return0;}就不行了呢?在我的电脑上报错:error:arraytype'char[4]'isnotassignablestr="abc";照常理来说,声明了charstr[4],那么str就代表了这个char数组的首地址。而按照上面第二个例子,"abc"返回的就是这个char数组的首地址,感觉这个是跟上面的第二个例子是没有区别的啊,应该可以正常赋值的啊,为什么就不行了呢?求一个合理的解释。
一只斗牛犬
开心每一天1111
相关分类