ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一篇文章,看懂自定义类型联合与枚举类型

一篇文章,看懂自定义类型联合与枚举类型 目录联合体联合体类型的声明联合体的特点相同成员的结构体和联合体的大小对比联合体大小的计算联合体的应用枚举类型枚举类型的声明枚举类型的优点枚举类型的使用联合体联合体类型的声明和结构体类似联合体也是由一个或多个成员组成成员可以是不同类型的。联合体的关键字是union。联合体开辟内存空间时只为最大的成员开辟,联合体中的成员共用这一片空间所以联合体又叫*共用体。当联合体一个成员的值修改时其他成员的值也会受影响。联合体的特点联合体的成员是共用一片空间的联合体空间的大小至少是最大成员的空间大小相同成员的结构体和联合体的大小对比structS{charc;inti;};structSs{0};unionUn{charc;inti;};unionUn un{0};联合体大小的计算联合体的大小至少是最大成员的空间大小。当最大成员的大小不是最大对齐数的整数倍时要对齐到最大对齐数的整数倍数组的对齐数是数组一个元素的宽度。联合体的应用联合体的合理应用是可以节省空间的比如我们要搞一个活动要上线一个礼品兑换单礼品兑换单中有三种商品图书、杯子、衬衫。每一种商品都有库存量、价格、商品类型和商品类型相关的其他信息。图书书名、作者、页数杯子设计衬衫设计、可选颜色、可选尺寸那我们不耐心思考直接写出一下结构structgift_list{//公共属性intstock_number;//库存量doubleprice;//定价intitem_type;//商品类型//特殊属性chartitle[20];//书名charauthor[20];//作者intnum_pages;//⻚数chardesign[30];//设计intcolors;//颜⾊intsizes;//尺⼨};这种方法简单大方但是不够节省空间细细思考我们可以把商品的属性分成如下部分公共属性库存量定价商品类型特殊属性书名作者页数设计颜色尺寸其中公共属性是必须要有的特殊属性根据商品类型而定。所以我们就可以把公共属性单独写出来剩余属于各种商品本身的属性使用联合体组合起来这样就可以减少所需的内存空间一定程度上节省了内存。structgift_list{intstock_number;//库存量doubleprice;//定价intitem_type;//商品类型union{struct{chartitle[20];//书名charauthor[20];//作者intnum_pages;//⻚数}book;struct{chardesign[30];//设计}mug;struct{chardesign[30];//设计intcolors;//颜⾊intsizes;//尺⼨}shirt;}item;};枚举类型枚举类型的声明枚举顾名思义就是一一列举把可以列举的值一一列举出来枚举的关键字是enumenumColor{//枚举类型可能的取值——枚举常量RED,GREEN,BLUE};如上定义的enum Color是枚举类型{}中的值就是枚举类型可能的取值又叫做枚举常量。枚举常量是有值的默认从0开始依次递增。在声明枚举类型时可以赋初值enumColor{RED2,GREEN3,BLUE5};枚举类型的优点我们可以使用#define定义常量为什么非要使用枚举枚举的优点增加代码的可读性和可维护性。和#define定义的标识符比较枚举有类型检查更加严谨。便于调试预处理阶段会删除#define定义的符号。枚举常量是遵循作用域规则的枚举声明在函数内只能在函数内使用。枚举类型的使用enumColor{RED2,GREEN3,BLUE5};intmain(){enumColorcolorRED;return0;}
返回列表