C 为结构中的结构数组动态分配内存
我有一个棘手的问题,试着用一个简短的例子来解释 我想要这样的结构:C 为结构中的结构数组动态分配内存,c,arrays,struct,dynamically-generated,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[]; } 停车场里有很多车,每辆车都有不同数量的座位,每个座位都有不同的参数。汽车的最
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);
}
我如何编程?我在网上搜索过,但找不到解决办法。我只找到了部分,但我猜不透
Andre虽然允许将具有未指定长度的数组的结构作为最后一个成员,但此类结构不允许作为数组的成员 由于要为这些数组动态分配空间,请将
cars
和seats
成员声明为指针:
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;
};
您只需要使用malloc()分配内存,使用指针。“我想动态分配内存。”-->More detail request。这是像A)3辆车,每个2个座位还是B)3辆车,车[0]2个座位,车[1]4个座位,车[2]5个座位?@chux它是版本B)现在下一步是找到如何将有关车数(0到100)和各种座位数(0到6)的信息传递到程序中。数据的来源是什么?发布一些示例配置文件。它也适用于结构和分配。:-)谢谢很好的简化,虽然
cars
仍然可以是灵活的数组成员。啊。。。谢谢你能给我一个关于内存分配的提示吗?每辆车都有座位数。但是我不能在不知道座位数的情况下分配汽车阵列。。。还是不?我头上有个结…:-(@Andre当您分配car
数组时,每个实例都包含一个指针的空间。然后,对于每个car,您为seats
数组分配空间,并将该数组的起始地址分配给seats
成员。C在哪里禁止数组的元素类型为具有灵活数组成员的结构y这样的事情不会达到OP的目的,但我在标准中找不到任何实际上不允许它的东西。@JohnBollinger我自己找不到它,但想法是你不能在有FAM的结构上做指针算术,因为它的大小不包括FAM。