目录
一 ⾃定义类型:联合【共⽤体】
1 联合体类型的声明/定义/赋值
2 联合体的特点
3 相同成员的结构体和联合体对⽐
4 联合体⼤⼩的计算
5 联合的⼀个练习(大小端的判断)
二⾃定义类型:枚举
1 枚举类型的声明
2 枚举类型的使⽤
2 枚举类型的优点
一 ⾃定义类型:联合
1 联合体类型的声明/定义/赋值
声明
这里我们声明了一个联合体,里面有char、int两种元素。
定义/赋值
2 联合体的特点
上面代码的结果一样在一次证明了 联合的成员是共⽤同⼀块内存空间。
2.2 ⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合⾄少得有能⼒保存最⼤的那个成员)。
因为int占4个字节而char占一个字节所以结果为4,上面结果为4在一次证明⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合⾄少得有能⼒保存最⼤的那个成员)。所以联合体相比于结构体更省空间,那联合体没有什么弊端吗?我们来看下面一个代码。
我们发现un.i的结果为97,在就是 联合体的弊端:不支持联合体成员的同时使用。
3 相同成员的结构体和联合体对⽐
结构体:
结构体内存分布:
联合体:
联合体内存分布:
4 联合体⼤⼩的计算
4.1规则:
为什么union Un1的结果是8呢?因为联合的⼤⼩⾄少是最⼤成员的⼤⼩即char c占5个字节在因为当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候,就要对⻬到最⼤对⻬数的整数倍,而5不是最⼤对⻬数(8)的整数倍,union Un2同理。
5 联合的⼀个练习(大小端的判断)
二 ⾃定义类型:枚举
枚举顾名思义就是⼀ 列举,把可能的取值⼀ 列举。
1 枚举类型的声明
例如我们现实⽣活中: ⼀周的星期⼀到星期⽇是有限的7天,可以⼀ 列举
注意:默认情况下枚举的可能取值都是有值的,默认从0开始,依次递增1。
例如什么代码结果
根据:默认情况下枚举的可能取值都是有值的,默认从0开始,依次递增1。即Mon=0,在依次递增1。
声明枚举类型的时候也可以自由赋初值。
2 枚举类型的使⽤
注意:那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐较严格。
2 枚举类型的优点
本篇文章就到此结束,欢迎大家订阅我的专栏,欢迎大家指正,希望有所能帮到读者更好的了解联合和枚举,觉得有帮助的还请三联支持一下~后续会不断更新C/C++相关知识,我们下期再见。