gpt4 book ai didi

c - 如何判断输出时使用的是什么类型的union?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:25 25 4
gpt4 key购买 nike

我在结构中使用 union 类型来定义此人是学生还是员工。当我试图输出struct数组中的信息时,我发现很难弄清楚这个人是什么样的人,更不用说输出更多信息了。不要告诉我停止使用 union,对不起,我被要求这样做。她是我的简化数据结构:

typedef union student_or_staff{
char *program_name;
char *room_num;
}student_or_staff;

typedef struct people{
char *names;
int age;
student_or_staff s_or_s;
}people[7];

最佳答案

了解 union 中存储的内容的唯一方法是将此信息包含在其他地方。

处理 union 数组(或包含 unionstruct 数组)时,通常会发生两种情况:

  • 数组中的所有 union 都具有相同的类型,或者
  • 每个 union 可以拥有自己的类型。

当数组中的所有 union 都拥有相同的类型时,一个指示 union 拥有的类型的变量就足够了。

当每个 union 可以容纳不同的类型时,一种常见的方法是将其包装在 struct 中,并添加一个标志来指示 union 已设置。使用您的示例,应将标志添加到 struct people,如下所示:

enum student_staff_flag {
student_flag
, staff_flag
};
typedef struct people{
char *names;
int age;
enum student_staff_flag s_or_s_flag;
student_or_staff s_or_s;
}people[7];

关于c - 如何判断输出时使用的是什么类型的union?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com