【问题标题】:Automatically generate struct instances自动生成结构实例
【发布时间】:2016-12-04 23:03:19
【问题描述】:

假设结构定义为:

struct car {
   int registration_number;
}

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

Enter number of cars: 20
#generate 20 struct instances

我不想在 struct 中创建一个数组,但想要为每辆车创建一个单独的实例。我不明白自动生成实例的协议是什么。

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

我以为我会运行一个循环,但我不明白如何每次都声明新的实例名称:

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

【问题讨论】:

  • 制作一个结构数组。您不能在运行时创建变量名。
  • @melpomene 清除了很多。谢谢。
  • 如果大小为 n,则创建一个结构数组,您可以选择将其声明为静态或动态内存分配。

标签: c struct


【解决方案1】:

创建一个结构数组。您不能在运行时创建变量名。 – 美尔波美尼

【讨论】:

    【解决方案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

    【讨论】:

    • 不要投射malloc()。在这种情况下,您的演员表或 sizeof 表达式是错误的。 (为什么还要使用 2 级结构?)
    • 更好:struct car *cars; ... cars = malloc(num * sizeof *cars); ... cars[i].registration_number = 42;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多