目录
枚举
枚举是C语言常见的一种基本数据类型,它可以避免多个整数定义的麻烦,使代码整洁干净易读
假设定义出,一个星期7天,传统的方法就是这样,为每个整数定义一个别名:
如此一看,就觉得繁琐无比,大量重复#define xx明显增加代码量,且数值需自己一一对应
而枚举,可以解决这种定义连续数值的过程
基本格式
enumDAY//名称{ MON, TUE, WED, THU, FRI, SAT, SUN//变量};
当变量第一个值未自定义时,第一个枚举成员的默认值则为整型0,后续成员值依次加1,如此时MON=0,TUE=1,WED=2·····
定义枚举变量
①先定义枚举类型,再定义枚举变量
enumDAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN}; enumDAYday;
②定义枚举类型的同时定义枚举变量
enumDAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN} day; //省略了DAY
③省略枚举名称,直接定义枚举变量
enum//省略名称{ MON=1, TUE, WED, THU, FRI, SAT, SUN} day; //直接定义枚举变量
实际应用测试
我们尝试将枚举里的值printf()一下,看看是不是我们所想要的,这里尝试:直接使用枚举变量;通过定义枚举变量a;通过int b定义赋值,使用三种方式来输出
编辑
据此我们发现,每一个星期值,都按顺序被定义好了,简单省事
枚举遍历
C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理,所以按照 C 语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。
接下来我们尝试使用 for 来遍历枚举中的所有元素
enumDAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN}DAYday; intmain() { for (day=MON; day<=SUN; day++) { printf("%d\n", day); } return0; }
其中的输出结果为:
1
2
3
4
5
6
7
当不连续时,例如我们将变量TUE=10,此时的MON=0,很明显是不可以实现遍历的。
更多枚举的好玩实例,等我摸索摸索再分享给大家,有想法的C友,可以在评论区分享😂
枚举与数组的比较
intmain () { intn[ 10 ]; inti,j; for ( i=0; i<10; i++ ) { n[ i ] =i; } for (j=0; j<10; j++ ) { printf("n[%d] = %d\n", j, n[j] ); } return0; }
枚举是值类型,数组是引用类型
枚举存常量,数组存变量,枚举中,似乎一切都是固定的,而数组,在固定的内存中,却可以更改其元素。