11

C で 2 次元配列を memcpy する方法:

私は2次元配列を持っています:

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 に答える