如何在C中记忆二维数组的一部分?
如何在C中记忆二维数组:
我有一个二维数组:
int a[100][100]; int c[10][10];
我想使用memcpy
将数组c中的所有值复制到数组a,如何使用memcpy执行此操作?
int i; for(i = 0; i<10; i++) { memcpy(&a[i][10], c, sizeof(c)); }
它是否正确?
这应该工作:
int i; for(i = 0; i<10; i++) { memcpy(&a[i], &c[i], sizeof(c[0])); }
我不认为这是正确的,不。
memcpy()
无法知道a
的内存布局和“尊重”它,它将覆盖sizeof c
相邻字节的sizeof c
,这可能不是你的意思。
如果要复制到a的“子方块”,则必须手动执行此操作。
它应该是:
for(i = 0; i < 10; ++ i) { memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int)); }