C语言里的字符串实际上就是char组成的数组,所以#includeintmain(void){charstr[4]="abc";for(size_ti=0;i
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
刚才突然想明白了。因为数组名只是代表数组第一个元素的地址的值,比如数组inta[10],a实际上就是&a[0],它只是一个值,就像5这类东西一样,是不能作为左值的,不能给它赋值。所谓指针只是一种保存地址的变量,单独用数组名的时候它只是数组第一个元素的地址的值,并不是保存第一个元素地址的变量。所以在任何时候都不能把数组名直接放在等号的左边,这个问题跟字符串什么的并没有什么关系。好像是这样的,如果有什么不对请大家指出。
开心每一天1111
TA贡献1836条经验 获得超13个赞
第一种charstr[4]="abc";这一种的含义是,分配一个char的数组(有四个元素),'a'放进str[0],'b'放进str[1],'c'放进str[2],'\0'放进str[3]第二种char*str;str="abc";这是声明一个char型指针变量str,然后创建一个字符串常量"abc",然后char指针str指向这个常量的内存,其实你可以试试,你可以通过str输出这个字符串(可以读),但是不能更改它(不能写)第三种charstr[4];str="abc";这种是有语法错误的,先声明一个char数组str[4],这时候str[4]有一块内存,而str作为数组名,相当于一个指针常量,固定指向str[4]这个数组的第一个元素的地址。而你使用str="abc",相当于想要给一个指针常量赋值,所以显然是有语法错误的。想想你对一个常量赋值,当然会有错误!!
添加回答
举报
0/150
提交
取消