枚举体和共用体

枚举体

 

enum是枚举关键字

8936005ce5f14cdeaedc3a5ae09c6e3c.png

 

{}内的量是枚举常量,枚举常量之间用逗号分隔(最后一个枚举常量后什么符号也不放)

 

枚举常量都有值,默认为第一个创建的枚举常量的值为0,第二个为1,以此类推。

 

也可以改变默认枚举常量的值

5c5975e43b244e1aa1ba8b2855c50959.png

 

只能在enum 后的{}中给枚举常量赋初始值

{}之外的枚举常量是常量,不可修改

 

同一程序不能有同名的枚举类型(enum 枚举名),且不同的枚举类型中不能存在同名的枚举成员

 

枚举变量的值只能是该变量的枚举类型例举出来枚举成员

 

不能将一个数值直接赋值给枚举变量,如enum sb a    

a=3是错误的

但是可以强制类型转换,将常数转换为对应枚举类型,但强制类型转换后赋值给枚举变量的数值依然要是该枚举变量里面有的值。

 

同类型的枚举数据可以进行关系运算和算术运算。

 

为什么要用枚举?

我们可以使用#define定义常量,为什么非要使用枚举?

 

枚举的相对于#define的优点:

1.增加代码的可读性和可维护性

2.和#define定义的标识符比较枚举有类型检查,更加严谨。

3.防止了命名污染(封装)

4.便于调试,#define是替换,不好调试。

5.使用方便,一次可以定义多个常量

 

共用体(联合体)

关键字:union

 

共用体的特点

 

共用体中的成员共用一个空间

一个成员用时,另一个成员不能用(跟共享单车一样,一个人扫码使用了,另一个人就扫不了这辆自行车)

且共用体变量以及所有成员的的起始地址一样

 

共用体的初始化

共用体的初始化是只能初始化一个成员,因为共用体中一次只能有一个有效数据

 

共用体的大小

 

共用体和结构体一样,也有内存对齐

不过共用体的内存对齐规则只有一条,就是共用体的总大小为共用体中成员的最大对齐数的整数倍

 

为什么只有一条对齐规则?

 

因为共用体的成员是共用同一块内存空间的,

如果一个共用体里有char   int   double三个类型的成员,就只需要double占据0~7偏移量就行了,因为用int类型成员时,根据共用体成员的起始地址相同,int只占据0~3偏移量。

 

共用体的大小, 至少是最大成员的字节大小,才根据对齐规则,就可以得到共用体的最终大小。

 

 

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值