枚举类型的用法

枚举类型的用法在很多有关于C语言的教材中都是很简单的一笔带过去就算了,或者只是简单的跟读者介绍了一下这个的概念,简单的使用;

在实际的开发过程中,我们总是常见这一些类型,例如stm32单片机官方提供的固件中,就包含了大量的枚举类型:

例如:初始化管脚的上下拉、管脚的输出电平、管脚的复用类型、输入输出类型,等等都是枚举类型,另外官方提供的库函数,最终都是操作到寄存器。在官方的库函数的底层中,所有的操作都是映射到寄存器上面,对应的枚举变量设定了相关的地址或者常量,使得代码更加通俗、易懂(相比寄存器编程和库函数编程)

我们可以称这些值是同一个类型的数据,我们把它们重新命名一下,便于阅读和记忆。

首先要明白的是:枚举类型只是一个常量,对常量进行赋值操作是没有任何意义的操作!

用法1:作为数组元素的下标。

        当一个数组大到一定程度的时候,数据下标的数字1,2,3.....n;就不能很直观的看出来这个数组第几个下标元素的作用了,此时引入枚举类型做为数组元素下标,就很清晰的知道该下标的作用。

用法2:作为一个变量,灵活分配数组大小。

        在定义枚举类型的最后,定义一个枚举类型_num,用来标记数组的最后(末尾);在实际使用中,可以灵活改变数组的大小;因为编译器会自动分配一个常量给它,另外在for循环扫描的场景下,也是可以使用这个变量,数组边缘检测、数组溢出检测等方面。

用法3:配合switch语句

        在switch语句中配合使用枚举类型,在判断各个分支的时候使用,是的代码的可读性更高

用法4:枚举类型配合结构体

        在面对对象编程的思路中,就有大量的使用到结构体和枚举类型的运用。何为面向对象,简单的说就是:一切都是对象,将对象所具备的操作抽象成一个接口(api)。常见的stm32单片机官方的库函数中,它们将GPIO抽象成一个接口、串口、定时器也是一个接口,

官方的库函数中,将每个外设都抽象成一个接口,它们各自有各自的属性,(GPIO属性:管脚号、输入输出模式、输出频率;定时器属性:分配系数、自动重装载值、时钟分配系数、定时器编号)将这一些属性用结构体和枚举变量封装起来,当作一个对象来处理,就是简单的面对对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值