Как memcpy часть двумерного массива в C?

как 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 ответов


Это должно работать :

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

Я не думаю, что это правильно, нет.

тут memcpy() чтобы узнать о макете в памяти a и "уважать" его, он будет перезаписывать sizeof c смежные байты, которые могут быть не тем, что вы имеете в виду.

если вы хотите скопировать в "под-квадрат"a, то вы должны сделать это вручную.


на самом деле это должно быть:

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