memcpy
не гарантированно работает. Технически вы создаете массив массивов, и в зависимости от того, как выделяется память для каждого отдельного «линейного» массива, memcpy
может работать или не работать. Вероятно, будет в зависимости от того, как вы его распределили, но это не гарантировано.
Это то, что вы пытались сделать.
#include <stdio.h>
#define ROW 2
#define COL 10
int
main(void)
{
int array[ROW][COL] ={ {2,6,12,18,23,55,57,58,59,60} , {1,3,5,9,11,19,27,28,31,56}};
int i,j;
int array1D[ROW*COL];
for (i=0; i<ROW; i++){
for (j=0; j<COL; j++){
array1D[i*COL+j]=array[i][j];
}
}
for (i=0; i<ROW*COL; i++){
printf("%d ",array1D[i]);
}
}
Обратите внимание, что здесь i
представляет строку, а j
- столбец. Чтобы получить доступ к индивидуальному int
и сохранить «2d» природу, индекс будет row #*column length+column #
. Или i*COL+j