1. 枚举类型
1.1 定义枚举类型
定义枚举类型:成员是常量
枚举自带规定的值:0 1 2 ,int 类型
也可以自己赋初值,MALE = 2 之类的,但是以后就不能更改
如果部分赋初值的话,下面的会自动递增1,上面的还是0 1 2这样自动取值
不能enum Color c = 2; 因为右端是整型,左端是Color枚举类型,不能转换
1.2 枚举的优点
define 定义的标识符常量,不存在类型,只是简单的替换
enum 将同一类型封装到一起,防止污染
enum 可以调试,define 在预处理阶段,不能调试
1.3 枚举大小
因为枚举自动赋值是 0 1 2 ,也就是整型,所以枚举的大小就是 int 的大小,也就是4个字节
2. 联合体(共用体)类型
联合体的定义、访问等等和结构体类似,没有太大的区别
联合体-共用体:共用同一块空间
- c、i 地址相同,公用同一块空间
2.1 联合体大小的计算
练习:8 字节
1. 数组对齐的是它的类型char,不是个数[5]
2. union 联合体也存在对齐,因为和 struct 结构体类型类似
3.位段不存在对齐,因为要节省空间
2.2 联合体实现计算大小端
2.2.1 指针实现
优化一下,封装成函数
2.2.2 联合体实现
i、c 共用同一块内存空间,将 int i赋值,也会改变char c 的值