文章目录
- [1. 联合体](#1. 联合体)
-
- [1.1 联合体类型的声明](#1.1 联合体类型的声明)
- [1.2 联合体的特点](#1.2 联合体的特点)
- [1.3 联合体和结构体对比](#1.3 联合体和结构体对比)
- [1.4 联合体的大小](#1.4 联合体的大小)
- [1.5 联合体的应用](#1.5 联合体的应用)
- [1.6 用联合体判断大小端](#1.6 用联合体判断大小端)
- [2. 枚举](#2. 枚举)
-
- [2.1 枚举类型](#2.1 枚举类型)
- [2.2 枚举优点](#2.2 枚举优点)
- [2.3 枚举类型的使用](#2.3 枚举类型的使用)
1. 联合体
1.1 联合体类型的声明
- 与结构体相似,联合体的关键字是
union
,且联合体中也有多个成员

1.2 联合体的特点
- 联合体与结构体不同的是,编译器只为联合体中最大的成员分配空间
- 因此联合体的特点就是所有成员共用同一块内存空间,因此也叫共用体



1.3 联合体和结构体对比

1.4 联合体的大小
- 联合体打大小最少是最大成员的大小
- 当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍

1.5 联合体的应用
假如搞一个活动,上线一个礼品兑换单,包含三种商品:图书、杯子、衬衫,其中图书包含:书名、作者、页数;杯子:设计;衬衫:设计、可选颜色、可选尺寸。除此之外,所有商品都还得有库存量、价格、商品类型。
1.6 用联合体判断大小端

2. 枚举
2.1 枚举类型
- 枚举就是把可能得取值一一列举
- 枚举里面的成员都是有值的,默认是从0开始
- 枚举类型里面的成员一般是大写


2.2 枚举优点
- 增加代码的可读性和可维护性
- 和#define定义的标识符⽐较枚举有类型检查,更加严谨
- 便于调试,预处理阶段会删除 #define 定义的符号
- 使⽤⽅便,⼀次可以定义多个常量
- 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤
2.3 枚举类型的使用

特别注意的是:枚举的最后一个成员不需要加任何标点符号