假设我有一个像
这样的多维数组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,我在哪里做错了?
答案 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
。