c语言常用数据类型
一、枚举
本文有的内容摘自:被新手忽视的枚举enum用法,竟如此强大! - 知乎 (zhihu.com) 如有侵权请告知 !
1、简介:枚举类型是一种基本数据类型,用于定义一组具有离散值的常量,可以让数据简洁,易读。通常用于为常量取名字。
每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。
2、格式: enum 枚举名 {枚举元素1,枚举元素2,……}; 枚举类型是按照int型存储的(每个成员都是4字节---不同系统有区别)。
如:一星期有 7 天,如果不用枚举,则需要使用宏定义:(使用枚举替代预处理指令#define)
值分别为:1 2 3 4 5 6 7
定义枚举类型时赋值:enum day { MON , TUE , WED = 5 , THU , FRI , SAT , SUN}; 值分别为: 0 1 5 6 7 8 9
注意:一个 int 类型整数不能直接赋值给一个枚举变量,必须强制进行类型转换后才能赋值。
(1)、先定义枚举类型,再定义枚举变量 (2)、定义枚举类型的同时定义枚举变量
(3)、省略枚举名称,直接定义枚举变量 (4)、使用Typedef
3、应用举例
(1)、设置并限定单片机中寄存器每个位的值,右图是STM32固件库中GPIO配置模式的定义。使用中可 = GPIO_MODE_IPU;的方式
(2)、为固定的值命名,当作数组访问的下标。固定数据很多时,用0-100去表示就很难记住每个值代表什么意思。
比如说之前做过汽车故障诊断的产品,需要读取Pid数据存储到数组里,而PID有将近100个。
如果让你去记这100个每个代表哪个PID参数,估计你会崩溃。
而我把每个PID参数通过枚举另起一个一看就知道是什么参数的名字,是不是就方便很多?
因为每个PID都单独存储在数组的一个元素里,那我用这个名字作为下标能很快速地把指定PID参数从数组取出来。
(3)、作为一个变量,灵活分配数组大小
在定义数组的时候,直接用该枚举类型的最后一个值作为数组大小。
下次要增加或者减少枚举变量中参数的时候就不用去改数组大小了,非常方便。