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

时间:2015-12-05 00:17:49

标签: c malloc

如何在 malloc 中分配结构和数组结构?

表示例:

struct car_t{
int price;
float kmsDriven;
};

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

有一系列车库,每个车库都有一系列车辆。

2 个答案:

答案 0 :(得分:1)

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

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()是否成功实际使用。

答案 1 :(得分:1)

您必须使用循环:

#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);
}