enum 枚举类型 {枚举值1名=数值,...,枚举值n名=数值};
这里先提一下关键字和标识符的区别:
关键字:编译器自己预定的,具备固定含义的保留字,在程序中不能作为一般的标识符使用。
例如:int ,double,if,for,while等,在代码中一般用蓝色进行标注。
标识符:在程序中出现的变量名,常量名,类名,对象名,函数名等统称为标识符。
标识符的命名规则和变量类似:开头必须是字母或者下划线,不能是数字。
一、枚举类型
枚举类型:一种用户自定义数据类型,用关键字enum来声明和定义。
C语言提供了一种专门的数据类型来表示这样一类只能取特定值的数据,那就是枚举类型。
比如:月份(只有十二个月),星期(有七天)等等。
枚举是一种基本数据类型(有枚举常量和枚举变量),类似于整型、浮点型、字符型,而结构体和共用体是一种高级数据类型。
枚举常量用来直接表示枚举数据,而枚举变量用来保存枚举常量。
enum week{Monday=1,Tuesday,Wednesday=4,Thursday,Friday,Saturday,Sunday};
如上面的枚举元素Monday,Tuesday,...都是枚举常量。
在程序中,所有的枚举常量按照整型数值进行输出,默认的,第一个标识符(枚举常量)的值是0,后面元素的值依次加1.
当然,也可以人为的指定,如上面人为指定第一个元素值为1,第三个元素值为4。
1)如果第一个枚举常量的值没有指定,那么它的值就是0.
2)没有指定的数值的枚举常量的值是紧随指定数值的枚举常量的值,依次递增的。
举例1:
int main()
{
enum week{Monday=1,Tuesday,Wednesday=4,Thursday,Friday,Saturday,Sunday};
//enum weekday{Mon,Tue=4,Wed,Thu,Fri,Sat,Sun};
//enum week day1=Thursday;
//enum weekday day2=Fri;
printf("Tuesday = %d\n",Tuesday);
printf("Thursday = %d\n",Thursday);
printf("Friday = %d\n",Friday);
printf("Saturday = %d\n",Saturday);
printf("Sunday = %d\n",Sunday);
system("pause");
return 0;
}
运行结果如下:
可以看出,将Monday指定为1后,后面元素依次加1,所以Tuesday=2.
在Wednesday指定为4后,后面的元素又依次加1,Thursday=5,Friday=6,Saturday=7,Sunday=8.
二、枚举数组和指针
枚举数组:用来保存多个枚举数据的。枚举类型名 枚举数组名[表达式];
enum week days[5];
定义了一个可以保存5个week枚举数据的枚举数组。
enum week days[5]={Tuesday,Friday,Monday,Friday,Monday};
给枚举数组days进行了如上的初始化。
枚举指针:用来保存枚举数据所在内存的地址。
enum week *pday;//定义枚举指针变量
enum week day;//定义枚举类型变量
pday=&day;//给指针变量赋值