如何在C中记忆二维数组的一部分?

时间:2013-06-03 11:58:41

标签: c arrays memcpy

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

这是正确的吗?

3 个答案:

答案 0 :(得分:12)

这应该有效:

int i;
for(i = 0; i<10; i++)
{
    memcpy(&a[i], &c[i], sizeof(c[0]));
}

答案 1 :(得分:2)

我不认为这是正确的,没有。

memcpy()无法知道a的内存布局和“尊重”它,它会覆盖sizeof c相邻的字节,这可能不是你的意思。

如果要复制到a的“子广场”,则必须手动执行此操作。

答案 2 :(得分:2)

实际应该是:

for(i = 0; i < 10; ++ i)
{
  memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}