
正文
c语言字符数组不能赋值,c语言字符数组不能赋值的原因
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中将一个数组的值赋给另外一个数组,好像要用指针来赋值
charss[]=hello;s=ss;错误原因是:是您不能使用赋值语句将一个字符数组直接赋值给一个字符串数组,也就是说,必须使用strcpy()函数来实现一个字符串的副本(在c语言中,但是在c++的string类中,上面的赋值是正确的)。
按元素赋值:遍历一维数组,并将每个元素赋值到二维数组的对应元素上。或者遍历二维数组,将每个元素赋值为一维数组对应值上。优点为操作灵活,可以按照需要任意赋值。
但是赋值的数组元素有9个,需要将数组a[8]改成a[9]*/ int b[3]={0};int *p;p=a;b[0] = p[2]; b[1] = p[6]; b[2] = p[8];以上代码会把对应的数据元素的值放到数据b中。
相关问答
Q1: C语言字符数组初始化以后是不是不能再给字符数组赋值了?
正确的——这里说的“能”与“不能”是指用C语言的语句操作。C没有提供对数组整体赋值的语句,所以肯定是不能对数组进行整体赋值的。
单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值。
这当然是不可以的啦,数组的赋值和普通的变量赋值是有很大区别的。
定义字符数组的时候,初始化是被认可的,但是赋值和初始化是完全不同的概念。
Q2: 为什么在C语言中数组无法赋值?
首先C语言里面的数组,一旦定义好了,是无法改变类型和长度的,也不是指针,不能改变指向的内容,所以如下这种写法 int a[10], b[10];a = b;是无法编译的。
因为数组名就是数组第一个元素的指针常量,是一个常量左值。可以赋值的必须是非常量左值,常量左值和右值是不可以被赋值的。以上是我个人的理解,有疑问继续追问。
因为是这样:比如int a[4]={1,2,3,4};那么系统就会分分配一块内存来存这个数组,而这块内存的地址就是a,a是一个常量,常量不能被赋值。赋值操作只有变量才行。
在最终的汇编结果中,数组名只是一个标号,对应一个地址,在程序中使用数组就是要替换成这个起始地址,因此作为标号本身是不可以修改的,也不是一个变量。
c语言字符数组不能赋值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言字符数组不能赋值的原因、c语言字符数组不能赋值的信息别忘了在本站进行查找喔。







