C语言中怎么把一维数组赋给另外一个一维数组

作者&投稿:恭桦 (若有异议请与网页底部的电邮联系)
C语言中,怎样将一个一维数组中的数,赋给一个二维数组??~

可以采用两种方式:
1 按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。

2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。

在C语言中,字符串不能像数字一样可通过赋值符进行赋值。
如:定义int a=233,b;后,使用b=a;给b赋值是可以的;但是char a[20]="abc",b[20];后,不能使用b=a;给a赋值。
常用的办法是使用strcpy(b,a);函数。
你所举的例子中,aa[0]=p[0];这里是行不通的, 可以考虑用strcpy(aa[0],p[0]);完成赋值。
如果还有什么问题,请留言追问。

可以采用两种方式:

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)

合理使用优先级可以极大简化表达式。



void main()
{
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[]数组的第十一个元素,没法一次性全部赋给.楼下那个方法也不错.


什么是数组维数
数组维数是指在多维数组之中采用一系列有序的整数来标注。整数列表之中整数始终相同的个数。在数据库中,数组维数与表中属性数量有关,属性越多,数组维数越大。属性,共同的性质和特点。计算机中的字段属性、资源特性和那些读取与修改的权限。例如:文件属性、用户的属性。按数组维数分类可以分为:一维...

初学者急求,fortran中设置的一维的数组,可结果显示超出数组的维数...
可能是计算过程中对数组的运算超出数组的维度了,比方说:integer :: a(10)do i = 1, 11 a(i) = i enddo 这样写肯定出问题,因为数组长度10,但是计算过程中出现了a(11)。不过你的代码没有贴出来,暂时只能这样推测了。

c语言问题: 例如:c语言中x[][3]是什么意思? 为什么第一个中括号里
没有初始化时就不可以这么写。只有在直接初始化的时候,可以这么写x[][3]= {1, 2, 3,4,5,6};因为下标的作用是给这个数组分配空间,括号里不写下标,那就直接初始化也行。

线性代数中什么叫维数?
5. 甚至在更抽象的数学语言中,当我们谈论一个变量y,如果它有2个自由度,即2个独立的变量参数,我们称它为二维基本变量。这表明y的行为受限于这两个自由度的交互作用。6. 理解向量的维数、坐标和坐标系,是线性代数理解的关键。如果你想深入探索这个概念,强烈推荐查阅我的个人主页,专栏《线性代数的...

c语言中怎样实现对二维数组元素进行赋值并输出。
可以按照下面步骤进行定义二维数组并输出:1 定义二维指针。2 确定数组维数,即行数和列数。3 申请行数个一维指针大小空间,并赋值给二维指针。4 对于每个一维指,申请列数个元素的空间,并赋值给对应的一维指针。5 输入或赋值数据。6 使用双重循环,逐个范围存储单元并输出。7 逐个释放一维指针上的内存...

C语言中,用多维数组名做函数参数,对形参数组定义时,为什么可以省略一维...
只能省略1维!如果省略2维的话,那么,对于a[3][4]和a[4][3]就搞混了!也就无法确定元素a[1][1]的位置了,因为不知道列宽!另外,数组做参数,实际上是弱化成指针的 所以可以省略1维的大小!~

c语言中,多维数组最多是多少维?我们老师说最多六十维?请问为什么?_百度...
c语言默认最多是二维数组;当然如果用指针自己分配内存的话可以自行进行计算,进行更多维的表示。二维数组本质上是将数组作为数组元素的数组,称为数组的数组。为了形象化理解二维数组,通常将二维数组写成行和列的排列形式,通常被称为m行n列。1、M:二维数组中包含多少个一维数组,二维数组是第一个维度...

在C语言中数组的初始化是如何定义的?
变量可以在定义的时候初始化,数组也可以。array[5]={1,2,3,4,5};在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。初始化值的个数可以和数组元素个数一样多。如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。如果维数表达式为空时,...

C语言如何一次声明a1 到 a10?
在计算机或者现实中,我们每做一件事情都有做这件事情的目的,不是盲目的去干。这里一次声明a1到a10的目的何在,在什么地方使用,还是就是简单的看语法,如果简单的看语法就完全没有必要了,如果有作用最好定义一个结构体,这样这些变量的地址空间在一起便于程序运行。或者定义一个数组存储这些变量的值。

c语言程序设计(输入一个数n,输出一个n维数组)
include <stdio.h> int main(void){ int n,i,*p;printf("请输入一个整数:");scanf("%d",&n);p=new int[n];for(i=0;i<n;i++)(p+i)=i;for(i=0;i<n;i++)printf("%d ",*(p+i));putchar('\\n');delete []p;return (0);} ...

临潭县13249934848: C语言编程:从键盘中输入十个数对一个一维数组赋值,并将其中的奇数存放到另一个数 -
塔背十维: #include<stdio.h> main() {int a[10],b[10];/*a数组存储输入的十位数,b数组存储奇数*/int i,j=0;printf("Please Input Ten Numbers:\n");for(i=0;i<10;i++);{scanf("%d",&a[i]);if(a[i]%2!=0){b[j]=a[i];j++;}} printf("Output the JiShu:"); for(i=0;i<j;i++)printf(" %d",b[i]); getch(); } 这是用win-tc编的,很简单!希望对朋友有帮助啊!如果有问题再找我啊!

临潭县13249934848: 把一个数组完全赋值给另外一个数组的语句(c语言)? -
塔背十维: 完全赋值?? b=a; 即可. 当然,要用你上面的写法的话,必须b[i][j]=a[i][j]; 你上下标都不一样,值当然不同啦.

临潭县13249934848: c语言中将一个数组的值赋给另外一个数组,好像要用指针来赋值 -
塔背十维: 把一个数组的全部元素赋给另一个元素,如果是字符数组,用strcpy或strncpy,如果是非字符型数组,可以用memcpy函数 void * memcpy ( void * destination, const void * source, size_t num );也可以用for loop int i; int n = sizeof(a)/sizeof(a[0]); for(i=0; i<n; i++){a[i] = b[i]; }如果必须用指针可以这样 int i = 0; int n = sizeof(a)/sizeof(a[0]); while(i < n){*p1++ = *p2++;i++; }

临潭县13249934848: C语言编程时,如果一个一维数组经过处理后,怎样将处理后的数组存入另一个数组? -
塔背十维: 用循环一个一个赋值啊 比如2个数组a[10]和b[10],a是你说的处理完的数组 那么 for(i=0;ib[i]=a[i]; 这样就行了 学C的话就是选定一本教材然后多上机,这点很重要 所有的实例都自己上机实现,然后用自己的想法熟练

临潭县13249934848: 【C语言】怎么输出一个一维数组以供其他程序使用? -
塔背十维: 这个简单啊 使用for循环2 for(i=0;i<10;i++) { printf("%d",a[i]);//输出数组10个数 }

临潭县13249934848: c语言中如何把一个数组赋给另一个数组啊? -
塔背十维: 根本不需要!一个循环就搞定!自己试试下面的这个!================== int a[3][3],b[3][3] for(i=1;i=3;i++) for(j=1;j=3:j++) a[i][j]=b[i][j];===================

临潭县13249934848: 怎么把一个一维数组赋值给一个二维数组的一行c++ -
塔背十维: int a[5] = {1,2,3,4,5}; int b[][5] = {0}; for (int i = 0;i { b[1][i] = a[i]; }

临潭县13249934848: 在c语言中怎样将一个数组中的全部内容赋给另一个数组,有没有一步就可以完成,不用for语句. -
塔背十维: 让我来告诉你答案!很明显你没有分清楚数组和字符串,对于字符串来说是可以的,因为有strcpy()和memcpy()这类函数调用可以直接复制,但是数组是不行的,一般都得用到一个循环.函数返回数组只要返回只要返回首地址就可以了,比如你要返回的是inta[10]的数组,那么你定义函数的时候可以这样写:int*afunc(){………………returna},即只要返回首地址,切忌a[10]不能再函数体中定义否则无意义.

临潭县13249934848: 求助~在C语言中,有没有方法能够使一个数组作为另外一个数组的元素来存放呢? -
塔背十维: (1) 二维数组y[3][20], 一维数组x[20], char x[20]="why"; char y[3][20]; strcpy(y[1],x); printf("%s",y[1]);(2) 结构 y. y 中有成员 char x[20].

临潭县13249934848: C语言如何定义一个一维数组并给数组赋值? -
塔背十维: 例如int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; //打印该数组 for(int i = 0;i<a.length();i++)printf(a[i]) //逆向打印数组 for(int i = a.length()-1;i>=0;i--)printf(a[i]) //求数组中的最大值 int max=0; for(int i=0;i<a.length();i++){if(max<a[i]){max=a[i]}} //求这个数组的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网