在结构数组中分配结构数组

Allocating an array of structures within an array of structures

如何使用 malloc 和结构数组以及结构数组进行分配?

例如:

struct car_t{
int price;
float kmsDriven;
};

struct garage_t{
int locationX;
int locationY;
struct car_t * car;
}

有一排车库,每个车库都有一排汽车。

像往常一样分配,一个一个分配。

int garage_num = 3, car_num = 5;
int i;
struct garage_t *garage;
garage = malloc(sizeof(struct garage_t) * garage_num);
for (i = 0; i < garage_num; i++) {
    garage[i].car = malloc(sizeof(struct car_t) * car_num);
}

您应该检查 malloc() 是否成功用于实际使用。

你将不得不使用一个循环:

#define N 42
#define M 17

struct garage_t *a = malloc(sizeof *a  * N);

for (int i = 0; i < N; i++) {
    a[i].car = malloc(sizeof (*a[i].car) * M);
}