【问题标题】:How to memcpy a part of a two dimensional array in C?如何在C中memcpy二维数组的一部分?
【发布时间】:2013-05-29 13:44:34
【问题描述】:

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

这对吗?

【问题讨论】:

  • 这取决于您希望值去哪里。它看起来不像你想要的那样。
  • a 的容量是您的 100 倍。 a 的哪些元素要持有c 的副本?
  • 更像sizeof(c[i]),不是?

标签: c arrays memcpy


【解决方案1】:

实际上应该是:

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

【讨论】:

  • 当我尝试做 &(c[i][0]) 时,它告诉我错误:'*(c+ 924u)[0]'中的'operator[]'不匹配
  • 你确定你打对了吗?我的编译器什么也没告诉我。你使用的是哪个编译器?
【解决方案2】:

应该可以的:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多