c语言枚举类型enum例子
大家好,下面小编给大家分享一下。很多人不知道C语言枚举类型的enum例子。下面详细解释一下。现在让我们来看看!
今天给大家讲讲我在产品开发中使用enum的一些琐碎操作。
我向你保证,今天的内容是你绝对不可能在书本和视频上学到的。
为什么要谈枚举?
因为我发现它是一个容易忘记又非常重要的关键词,如果你看看大佬们写的程序,你真的会发现enum的应用有很多很多。
让我惊讶的是,市面上的一些C语言书籍和视频课程并不关注讲enum。
今天我们还是教你真正掌握enum从理论到实际产品应用。
通过这些内容,你可以掌握以下知识:
掌握枚举的相关概念
掌握枚举的几种用法
掌握枚举在实际产品中的应用。
本文内容是《无限单片机编程的程序架构》视频教程的讲稿。我稍微做了些调整,如果你想看视频,也可以找我们拿。
我对枚举的理解是把一些固定值一一列出来,分别命名。例如,1被命名为true,0被命名为False。
True和false都是表示同一类型的数据,例如,它们都表示逻辑的正确或错误。
我们来模拟一下51单片机的IE中断使能寄存器每一位的值来举个例子。
我们可以对比一下单片机寄存器芯片的数据。当我们将IE寄存器的值设置为0x01时,意味着外部中断0开启,当它设置为0x80时,所有中断都被允许。
这些枚举值对于register IE来说都是固定值,所以我们可以把这些值称为同类型的数据。为了方便阅读和记忆,我们给它们重新命名吧,这是枚举的重要功能之一。
1.直接定义枚举值,然后给普通变量赋值。
上面的代码呢?它定义了一个枚举类型,但没有命名它。
没有办法像这样定义枚举变量,但是实际上是可以用的。
我们还可以通过定义一个普通变量,然后将枚举值赋给它,来输出正确的值。我个人经常懒懒的用这个方法。
2.用名称定义枚举
这里定义了一个名为WeekDay的枚举,所以我们可以通过这个枚举类型定义一个名为Day的枚举变量。
在这段代码中,枚举的别名被typedef定义为weekday,然后我们直接用WeekDay来定义一个枚举变量。这种方法是最常用的。
上面我们学习了枚举的一些定义方法,那么枚举在产品中有什么用呢?
枚举的功能:
1.将固定值命名为数组访问的下标。当有很多固定数据的时候,比如几十个或者几百个,如果你要用0到100来表示的话,很难记住每个值是什么意思。
比如之前诊断过的产品,需要读取Pid数据,存储在一个数组中,有近百个Pid。
如果让你记住这100个分别代表哪个PID参数,估计你就崩溃了。
我用枚举的方式给每个PID参数命名是不是方便很多?
因为每个PID都单独存储在数组的一个元素中,所以我可以通过使用这个名称作为下标,快速地将指定的PID参数从数组中取出。
我相信你能理解有枚举的阅读和无枚举的阅读的区别。
2.它可以作为变量灵活分配数组大小。
当我们定义数组时,我们直接使用枚举类型的最后一个值作为数组大小。
下次想增减PID参数,不用改变数组大小,非常方便。
3.枚举作为设定值
上图是STM32的固件库代码,配置GPIO模式的枚举定义。
我们可以看到每个枚举值代表一种模式。最后,通过将这些值写入相应的寄存器来完成GPIO的模式配置。
都在这里了。更多的实际应用可以通过跟随无边单片机编程来学习和提高。
最后:
我不知道你是否注意到了,但事实上,C语言可以进行面向对象的编程,即使枚举与结构合作。
面向对象是什么意思?一切都是对象,MCU GPIO是对象,定时器是对象,串口是对象,等等。
每个对象都有自己独特的属性。比如GPIO有输入输出模式,输出频率,输出管脚数,这些都是GPIO的属性。
然后我们可以通过枚举和结构封装这些属性,把它们当做一个对象来对待。
如果大家都很难理解也没关系。都很正常。
当你写了一定量的代码,你就会慢慢理解了。
以上解释了C语言中枚举类型的enum例子。这篇文章已经分享到这里了,希望能帮到你。如果信息有误,请联系边肖进行更正。
c语言枚举类型enum例子 内容由写信网整理,转载请保留地址: http://m.woxiexin.com/baike/jSQZmsFmjpfqz2AJIOtEoLao.html