gpt4 book ai didi

c++ - 联盟内部结构

转载 作者:行者123 更新时间:2023-11-30 20:05:57 27 4
gpt4 key购买 nike

我是 C 编程新手。

在 union 中使用结构而不是直接使用结构有什么优点?我的许多潜在客户都在 union 中使用结构,而不是直接使用它。请让我了解在 union 内使用结构的优点。

typedef struct
{
int a;
int b;
int c;
int d;
}MY_STRUCT;


typedef union
{
MY_STRUCT my_structure;
}MY_UNION;

最佳答案

union 用于节省 struct 中的空间。假设您有目录中项目的结构。该目录包含三个项目,每个项目都有库存编号和价格以及一些其他信息,如下所示

  • 书籍:标题、作者、页数
  • 马克杯:设计
  • 设计、颜色、可用、尺寸可用

一个可能的结构是:

struct catalog_item{
int stock_num;
double price;
int item_type;
int title[TITLE_LEN];
int author[AUTHOR_LEN];
int num_pages;
char design[DESIGN_LEN];
int colors;
int sizes;
};

但不知何故,这个struct浪费了空间,因为struct中只有部分信息对于目录中的所有信息都是通用的。例如:无需存储图书项目类型的设计、颜色和尺寸。

通过在catalog_item内使用union,可以减少空间

struct catalog_item{
int stock_num;
double price;
int item_type;
union{
struct{
int title[TITLE_LEN];
int author[AUTHOR_LEN];
int num_pages;
} book;
struct{
char design[DESIGN_LEN];
} mug;

struct{
char design[DESIGN_LEN];
int colors;
int sizes;
} shirt;

} item;
};
<小时/>

以上示例摘自书籍C Programming: A Modern Approach, 2nd Edition .

关于c++ - 联盟内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28127364/

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