复制C多维数组

时间:2012-02-01 13:20:12

标签: c arrays

假设我有一个像

这样的多维数组
int a[10][10]
int b[10][10]

void arrayCopy(int* a, int* b, int size){
    memcpy(b, a, size);
}

int main(){
   a[0][0] = 13;
   a[0][1] = 17;
   "and so on..."

   arraycopy(&a[0][0], &b[0][0], 10);
}

此代码无法正常工作我无法复制 - >中的所有值b,我在哪里做错了?

2 个答案:

答案 0 :(得分:4)

由于某些原因,您的size参数有误。首先,有10 * 10 == 100个元素,而且你将它传递给memcpy(),其大小为 bytes ,你的int可能更像4字节。此外,没有必要编写这样的功能。这应该足够了:

memcpy(b, a, sizeof(a));

答案 1 :(得分:3)

问题在于大小。 sizeof(a)100*sizeof(int),您应该传递该号码。

(当您要复制10 bytes时,您的代码会复制100 ints