【问题标题】:How to add a structure member dynamically in C?如何在C中动态添加结构成员?
【发布时间】:2016-02-15 04:35:13
【问题描述】:
struct point { 
    int x;
    int y;
};

main() {
    struct point a;
    a.x = 5;
    a.y = 10;
    printf("%d %d", a.x, a.y);
}

输出:

5 10

如果我想在同一结构中动态添加一个成员 (int z)。 流程是什么?

我尝试过的:

struct point {
    int x;
    int y;
};

struct newpoint {
    struct point a;
    int z;
};

我已经尝试了上述步骤,通过这些步骤,我们将新成员和旧结构 point 添加到新结构 newpoint 中。但这不是我想要的,我想动态添加新成员相同的结构。我在一次采访中得到了这个问题。

【问题讨论】:

标签: c struct


【解决方案1】:

问你这个问题的面试官让你陷入了陷阱。

在 C 中“动态定义结构”是不可能的。可以在其他语言(例如 JavaScript)中进行“鸭子类型化”,但 C 结构是编译时定义,并且是静态的。

【讨论】:

  • 如果他在运行时创建一个 C 文件并将其编译为库并动态加载它,他可以动态创建结构。这是对的吗 ? @Amit
  • @ParhamAlvani - 这无济于事,因为“主”应用程序不知道“动态”结构的结构,也无法通过标识符与其成员交互,只需通过内存偏移,这与分配大量内存并执行相同操作一样有用。
  • @ParhamAlvani:通过这种不必要的极端措施,您可以动态创建库可以使用的结构,当然。但不是现有程序可以使用。无论哪种方式,如果您在“动态”的含义中包含“编写和编译一个全新的程序”,那么您将“动态定义”的定义延伸到突破点。
  • 感谢您的解释。即使我在采访中说过,这在 C 中是不可能的,但他提到它是可能的。无论如何我会尝试与他见面并得到答案.
猜你喜欢
  • 1970-01-01
  • 2020-05-26
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 2022-11-29
相关资源
最近更新 更多