如何在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)); }