У меня есть функция concat
для объединения матрицы mat1
в форму mat2
. Здесь mat1
и mat2
используют фиксированные размеры (то есть DIM1 = 2, DIM2 = 2, DIM3 = 3, DIM1_1 = 4), но на практике мне нужно, чтобы они имели переменные размеры, поэтому я объявил размер трехмерного массива в максимальный размер, как указано в моем коде ниже (т.е. DIM2 = 20, DIM3 = 30), но программа выдает значение мусора, когда я делаю это. Может кто-нибудь посоветовать, как использовать трехмерные массивы переменного размера без использования malloc ()?
#include <stdio.h>
#include <string.h>
//!< Dimensions of a 3d array
#define DIM1 2
#define DIM2 2
#define DIM3 3
#define DIM1_1 4
void Concat(int (*mat1)[DIM2][DIM3], int (*mat2)[DIM2][DIM3], int len);
// void Concat(int (*mat1)[20][30], int (*mat2)[20][30], int len);
int main()
{
int mat1[DIM1][DIM2][DIM3] = {{{1,2,3},{4,5,6}},{{1,2,3},{4,5,6}}};
int mat2[DIM1_1][DIM2][DIM3];
Concat(mat1,mat2,2);
return 0;
}
// void Concat(int (*mat1)[20][30], int (*mat2)[20][30], int len){
void Concat(int (*mat1)[DIM2][DIM3], int (*mat2)[DIM2][DIM3], int len){
/*concatenate mat1 to mat2 */
memcpy(mat2[0], mat1, DIM1*DIM2*DIM3 * sizeof mat1);
memcpy(mat2[0+len], mat1, DIM1*DIM2*DIM3 * sizeof mat1);
}