能不能将a【10】=b【10】这样赋值。。。
可以采用两种方式:
1、按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2、当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。
扩展资料:
C语言中,赋值运算的操作是有方向的,即将右侧表达式的值(也称为右值)赋值左侧的变量,只能是标识一个特定存储单元的变量名。
由于变量名只能出现在赋值运算符的左边,因此它也被称为左值;由于常量只能出现在赋值运算符的右边,因此它也被称为右值。左值可以用作右值,但右值不能用作左值。
结构体的相关操作规则:
1、可以引用一个结构体变量中的一个成员的值:
例如,student1.num表示结构体变量student1中的成员的值,student1.num的值为10001。引用结构体变量中成员的一般方式为:结构体变量名.成员名。例如可以这样对变量的成员赋值:student1.num=10010;
2、不能将一个结构体变量作为一个整体进行输入和输出:
例如,已定义student1和student2为结构体变量,并且它们已有值。不能企图这样输出结构体变量中的各成员的值:cin>>student1;只能对结构体变量中的各个成员分别进行输入和输出。
不可以,之所以不可以是因为数组名是个常量,它的值是数组首元素地址,即不能将其它值付给这个常量。
可以采用循环的方法逐个复制,或者采用另一个同类型的指针(相对于数组名,指针是变量)指向要复制的数组,之后就可以采用这个指针访问之前的那个数组。
扩展资料:
当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。
一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。数组是计算机编程中的重要概念,运用数组可以方便地处理大规模的数据。
参考资料来源:
本回答被网友采纳1 逐个赋值法。
采用循环,逐项赋值。
以整型为例,int a[10], b[10];
要把a的值赋值给b,可以写作
int i;
for(i = 0; i < 10; i ++)
b[i] = a[i];
2 整体复制法。
利用C语言库函数memcpy可以整体复制。memcpy声明与string.h中,形式为
void * memcpy(void *dst, void *src, int length);
其功能为将src地址上长度为length字节的数据,复制到dst上。
于是上一个方法中的例子,可以用
memcpy(b,a,sizeof(a));
来实现相同效果。
代码量较前一个方法更少,同时效率也更高。
不可以,之所以不可以是因为数组名是个,它的值是数组首元素地址,即不能将其它值付给这个常量。
可以采用循环的方法逐个复制,或者采用另一个同类型的指针(相对于数组名,指针是变量)指向要复制的数组,之后就可以采用这个指针访问之前的那个数组。
扩展资料
C语言的主要用于构成,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。
相同运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
合理使用优先级可以极大简化表达式。
本回答被网友采纳{
int a[10]={1,2,3,4,5....};
int b[10];int i;
for(i=0;a[i]!=0;i++)
b[i]=a[i];
}
如果a[10]=b[10] 那么仅仅赋了b{}数组的第11个元素给a[]数组的第十一个元素,没法一次性全部赋给.楼下那个方法也不错.本回答被网友采纳