要将一维数组分配给二维数组,您可以将指针分配到数组中的正确位置。下面是一个例子。它还展示了如何动态创建 2D 数组,但我将其注释掉,因为示例不需要它。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float **matrix;
float *array;
array = (float *) malloc(16 * sizeof(float));
for (size_t idx = 0; idx != 16; ++idx)
{
array[idx] = idx;
}
matrix = (float **) malloc(4 * sizeof(float *));
for (size_t idx = 0; idx != 4; ++idx)
{
// matrix[idx] = malloc(4 * sizeof(int));
matrix[idx] = &array[idx * 4];
}
for (size_t row = 0; row != 4; ++row)
{
for (size_t col = 0; col != 4; ++col)
{
printf("%.1f ", matrix[row][col]);
}
printf("\n");
}
}
注意:这使得一维数组和二维数组指向同一个内存。如果您在 1D 中更改某些内容,它也会在 2D 中更改,反之亦然。如果你不想要这个,首先复制数组。