联盟内的结构

时间:2015-01-24 16:07:02

标签: c++ c

我是C编程的新手。

在联合中使用结构而不是直接使用结构有什么好处? 我的许多潜在客户在联合中使用结构而不是直接使用它。 请让我知道在工会中使用结构的好处。

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


typedef union
{
    MY_STRUCT my_structure;
}MY_UNION;

1 个答案:

答案 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中只有部分信息对目录中的所有信息都是通用的。对于,例如:无需为书籍类型存储designcolorsizes

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;  
};  

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