为结构中的结构数组动态分配内存

时间:2018-08-16 13:17:49

标签: c arrays struct dynamically-generated

我有一个棘手的问题,请尝试在一个简短的示例中进行解释。

我想要这样的结构:

struct car_park{
   int count_of_cars;
   struct car{
       int  count_of_seats;
       struct seat{
           int size;
           int color; 
       }seats[];
   }cars[];
}

在停车场中,汽车数量众多,每辆汽车具有不同的座位数,并且每个座椅具有不同的参数。汽车的最大数量为100,座椅的最大数量为6,但是我不想使用静态的汽车和座椅阵列。我想动态分配内存。

而且:我想在多种功能中使用它。

void read_current_cars(struct car_park *mycars){
// read config file and allocate memory for the struct
...
}

void function_x(struct car_park *mycars){
//... use struct
}

void main(){
struct car_park my;

read_current_cars(&my);
function_x(&my);
}

如何编程?我在网上搜索,但找不到解决方案。我只找到了零件,但我对此不解。

安德烈

1 个答案:

答案 0 :(得分:1)

虽然允许最后一个成员具有长度不指定长度的数组的结构,但不允许将这样的结构作为数组的成员。

由于您正在为这些数组动态分配空间,因此将carsseats成员声明为指针:

struct seat {
    int size;
    int color; 
};

struct car {
    int count_of_seats;
    struct seat *seats;
};

struct car_park {
    int count_of_cars;
    struct car *cars;
};