如何在 malloc 中分配结构和数组结构?
表示例:
struct car_t{
int price;
float kmsDriven;
};
struct garage_t{
int locationX;
int locationY;
struct car_t * car;
}
有一系列车库,每个车库都有一系列车辆。
答案 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);
}