11

如何在C中memcpy二维数组:

我有一个二维数组:

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));
}

这个对吗?

4

3 回答 3

12

那应该工作:

int i;
for(i = 0; i<10; i++)
{
    memcpy(&a[i], &c[i], sizeof(c[0]));
}
于 2013-06-03T12:01:21.327 回答
2

它实际上应该是:

for(i = 0; i < 10; ++ i)
{
  memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}
于 2013-06-03T12:02:49.800 回答
1

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

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

如果要复制到 的“子方格”中a,则必须手动进行。

于 2013-06-03T12:00:49.887 回答