2016-12-04 78 views
0

可以说该结构被定义为:自动生成结构实例

struct car { 
    int registration_number; 
} 

我想为用户指定生成结构实例的具体数量。

Enter number of cars: 20 
#generate 20 struct instances 

我不想在结构中创建一个数组,但想为每辆车分别创建一个实例。我不明白什么协议是自动生成实例。

car1,car2,car3......,car n 

我想我会运行一个循环,但我无法理解如何声明新的实例名,每次:

#some loop 
struct car instance_name #how to replace instance_name with actual names? 
+9

用户请结构的数组。您不能在运行时创建变量名称。 – melpomene

+0

@melpomene清理了很多。谢谢。 –

回答

-2

如果你事先不知道你有多少汽车实例需要,一方便的解决方案是使用malloc来即时预留更多的内存。

carArray = (struct car**) malloc(numberOfCars*sizeOf(struct car)); 

for (int i =0; i < numberOfCars; i++) 
    carArray[i] = (struct car*) malloc (sizeof(struct car)); 

一个有用的例子文章here

与一个类似的问题here

+2

请勿施放'malloc()'。在这种情况下,你的演员或你的'sizeof'表达式是错误的。 (为什么使用2级结构?) – melpomene

+4

更好:'struct car * cars; ... cars = malloc(num * sizeof * cars); ...汽车[i] .registration_number = 42;' – melpomene