目录
枚举
枚举是C语言常见的一种基本数据类型,它可以避免多个整数定义的麻烦,使代码整洁干净易读
假设定义出,一个星期7天,传统的方法就是这样,为每个整数定义一个别名:
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
如此一看,就觉得繁琐无比,大量重复#define xx明显增加代码量,且数值需自己一一对应
而枚举,可以解决这种定义连续数值的过程
基本格式
enum DAY //名称
{
MON, TUE, WED, THU, FRI, SAT, SUN //变量
};
当变量第一个值未自定义时,第一个枚举成员的默认值则为整型0,后续成员值依次加1,如此时MON=0,TUE=1,WED=2·····
定义枚举变量
①先定义枚举类型,再定义枚举变量
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
②定义枚举类型的同时定义枚举变量
enum DAY
{
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 来遍历枚举中的所有元素
#include <stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
}DAY day;
int main()
{
for (day = MON; day <= SUN; day++)
{
printf("%d\n", day);
}
return 0;
}
其中的输出结果为:
1
2
3
4
5
6
7
当不连续时,例如我们将变量TUE=10,此时的MON=0,很明显是不可以实现遍历的。
更多枚举的好玩实例,等我摸索摸索再分享给大家,有想法的C友,可以在评论区分享😂
枚举与数组的比较
#include <stdio.h>
int main ()
{
int n[ 10 ];
int i,j;
for ( i = 0; i < 10; i++ )
{
n[ i ] = i;
}
for (j = 0; j < 10; j++ )
{
printf("n[%d] = %d\n", j, n[j] );
}
return 0;
}
枚举是值类型,数组是引用类型
枚举存常量,数组存变量,枚举中,似乎一切都是固定的,而数组,在固定的内存中,却可以更改其元素。