数组赋值给指针_数组赋值

2023-02-19 02:59:27     来源:互联网

1、楼主可能把指针和数组名的作用给混淆了! 我看了楼上的解释,很详细,但恐怕楼主既然提出了这样的问题,估计也看不懂上面的解释,或者费解!我给你稍微解释下:首先数组名a和b的值是地址,各表示a[3],b[]这两个数组的首地址,而且数组名是一个符号常量,而非变量。


(相关资料图)

2、因此不能做任何赋值之类的运算。

3、但你程序里的式子a=b,即把b的地址赋予给一个符号常量,而常量是不能在赋值运算符号的左边,既它的值不能被改变,不能被赋值的。

4、综上有,a的值任然没有变,任然是数组a[3]的首地址,所以数出时没有任何内容,而且编译时也不会通过,会提醒你=号的左边有错误!我也理解了楼主的意思,是想通过把b数组的首地址赋予给a然后通过%s数出a数组。

5、这样输出的就是b数组。

6、只是你这里用错了对象,把符号常量a当做变量来赋值了。

7、但你可以把b的首地址赋予给一个指针变量,使指针指向b的首地址,然后输出用%s数出指针就可以数出b了。

8、具体如下:#include void main(){ char a[3],b[]={"China"}; char *p; p=b; printf("%s",p);}这里楼主就要注意p和a的区别,a是存放地址的常量,不能被赋值。

9、p是存放地址的变量,可以被赋值。

10、 另外,要实现楼主上面的目的,把数组b的内容放到数组a中,然后输出数组a的到数组b的内容,可以简单的用一个strcpy函数就行了。

11、程序如下:#include #include void main(){ char a[6],b[]={"China"}; strcpy(a,b); printf("%s",a);}这里还是必须注意,strcpy中前一个数组的长度要大于或则等于后面数组的长度,这样在实现赋值的时候能够确保前面的数组容纳下后面数组的所有元素,所以这里把a数组的长度改为6。

12、希望能帮到楼主!。

本文分享完毕,希望对大家有所帮助。

标签: 符号常量 必须注意 赋值运算

[责任编辑:news001]

为您推荐