我是C编程的新手。
在联合中使用结构而不是直接使用结构有什么好处? 我的许多潜在客户在联合中使用结构而不是直接使用它。 请让我知道在工会中使用结构的好处。
typedef struct
{
int a;
int b;
int c;
int d;
}MY_STRUCT;
typedef union
{
MY_STRUCT my_structure;
}MY_UNION;
答案 0 :(得分:3)
union
用于节省struct
中的空间。假设您有目录中项目的结构。该目录包含三个项目,每个项目都有库存号和价格,其他信息为
一个可能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
中只有部分信息对目录中的所有信息都是通用的。对于,例如:无需为书籍类型存储design
,color
和sizes
。
在union
内使用catalog_item
,可以减少空间
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;
};