如何利用memcpy将二维指针复制给一维指针?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用memcpy将二维指针复制给一维指针?相关的知识,希望对你有一定的参考价值。
int *tmp1;
int **tmp2;
int *tmp3;
tmp1 = new int[3*4];
tmp2 = new int *[3];
for (int i=0; i<3; i++)
tmp2[i] = new int[4];
for (int i=0; i<3; i++)
for (int j=0; j<4;j++)
tmp2[i][j]=i*4+j;
memcpy(tmp1,tmp2,3*4*sizeof(int))
代码可以运行,但是tmp1没有被赋值,请问:如何将二维指针tmp2通过memcpy函数复制给一维指针tmp1?
非常感谢~
很简单啊,就跟你分配空间的顺序一样啊:
for (int i=0; i<3; ++i)memcpy( tmp1 + (i*4), tmp2[i], 4*sizeof(int) );
这样就可以了,注意把指针的位置找对就好。 参考技术A 原来是这种二级指针而不是二维数组……
弄个循环(是一个),计算好位置,然后一次一次复制
for(int i = 0; i < 3; ++i)
memcpy(&tmp1[i*4], tmp2[i], 4 * sizeof(int));
以上是关于如何利用memcpy将二维指针复制给一维指针?的主要内容,如果未能解决你的问题,请参考以下文章