c语言如何实现多维整型数组的复制

如题所述

有两种常用的方法。
1 对数组各个维循环,遍历每个元素,并将其赋值到目标数组的对应位置上。
缺点:代码相对复杂。
优点:可以不不同大小和形式的数组进行交叉复制。

2 利用C语言中多维数组元素存储连续性,使用memcpy函数整体复制。
缺点:仅使用源数组要复制的数据是连续的,同时在目标数组中以同样顺序连续复制的情况。
优点:代码简单,一个函数调用即可完成赋值。相对第一种,执行效率略高。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-05
memcpy(目的地址,源地址,字节数)
由于数组元素为连续内存存放
可以使用此函数,将源地址的内存内容,复制到目的地址去,字节数为sizeof(数组名)追问

for(c=0;c<3;c++)
{
strcpy(q,score[j][c])
strcpy(score[j][c],score[i][c]);
strcpy(score[i][c],q);
}我是这么写的,但是我想实现一行一行的排序,所以想把多维数组里的一行三个元素复制给q(我申请的一维含三个元素的数组,但是貌似strcpy是复制字符串的 遇到空格就停止了 因此只有第一列是我想要的顺序,这该怎么办呢~?

追答

如tanyuguo所说,当成一维数组来复制

比如
char a[3][3]
其实它就可以理解成3个一维数组
char a[3]
char b[3]
char c[3]
memcpy(q, &a[i][0], 3 * sizeof(char)); i就是所在的行,从0开始

追问

谢谢啦~对了~~

本回答被提问者和网友采纳
第2个回答  2011-12-03
当成一维数组来复制呗,反正多维数组内部的数据都是连续的。追问

谢谢~

第3个回答  2011-12-03
1.for一重一重循环
2.可以这样
typedef struct{
int s[9][9][9];
}WORD;
WORD p,q;
访问是用p.s[][][];
用的时候把p的值赋给q:q=p;
应该还有其他办法,请高人指点吧!追问

恩~谢谢~

相似回答