Как 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 ответов
Я не думаю, что это правильно, нет.
тут memcpy()
чтобы узнать о макете в памяти a
и "уважать" его, он будет перезаписывать sizeof c
смежные байты, которые могут быть не тем, что вы имеете в виду.
если вы хотите скопировать в "под-квадрат"a
, то вы должны сделать это вручную.
на самом деле это должно быть:
for(i = 0; i < 10; ++ i)
{
memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}