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

 我来答
风若远去何人留
推荐于2016-05-22 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

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

2 利用C语言中多维数组元素存储连续性,使用memcpy函数整体复制。
缺点:仅使用源数组要复制的数据是连续的,同时在目标数组中以同样顺序连续复制的情况。
优点:代码简单,一个函数调用即可完成赋值。相对第一种,执行效率略高。
wanfustudio
推荐于2018-04-05 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3760万
展开全部
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开始
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2011-12-03 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
当成一维数组来复制呗,反正多维数组内部的数据都是连续的。
追问
谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-03
展开全部
1.for一重一重循环
2.可以这样
typedef struct{
int s[9][9][9];
}WORD;
WORD p,q;
访问是用p.s[][][];
用的时候把p的值赋给q:q=p;
应该还有其他办法,请高人指点吧!
追问
恩~谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式