C语言中的自定义类型有三种,一个结构体,一个枚举,还有一个联合体,在这一篇博客里,我们先学习枚举类型。
目录
1.枚举的定义
1.枚举就是把可能的取值一一列举
2.关键字:enum
3.枚举也是可以进行类型重定义的,typedef
4.接下来通过代码说明枚举初始化的几种情况:
未初始化时,默认从0开始,取值依次向下增加1,就是0 1 2 ......
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> enum Sex { MALE, FAMALE, SECRET }; int main() { printf("%d %d %d \n", MALE, FAMALE, SECRET); return 0; }
初始化后,枚举常量不可更改,按初始化值输出
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> enum Sex { MALE=2, FAMALE=3, SECRET=5 }; int main() { //FAMALE = 6;//这条语句会报错,显示表达式必须是可修改的左值 printf("%d %d %d \n", MALE, FAMALE, SECRET); return 0; }
未完全初始化,也就是只初始化了其中的几个枚举常量,此时没有被初始化的枚举常量如果在已经初始化的常量之前,每个值就是从0开始依次增加1,如果在后,就是按照已经初始化的值之后增加1
enum Sex { MALE, FAMALE = 3, SECRET }; int main() { printf("%d %d %d \n", MALE, FAMALE, SECRET); return 0; }
2.枚举的优点
1.增加代码的可读性和可维护性(例如在我们实现的简易通讯录case后面加入枚举)
2.和#define定义的标识符比较,枚举有类型检查,更加严谨,define只是在定义后,在代码中找到一样的代码进行替换,不进行类型检查
3.防止命名污染
4.便于调试
5.使用方便,一次可以定义多个常量
3.枚举的使用
我们用代码来具体看一下,这里我们只为了介绍枚举,所以只简易写,感兴趣的小伙伴可以去通讯录的简易实现这篇博客,去看它的具体实现:
enum Menu { ExitContact, AddContact, DelContact, SehContact, ShowContact, MofContact, SortContact }; void menu() { printf("********************************************\n"); printf("********** 1.AddContact **********\n"); printf("********** 2.DelContact **********\n"); printf("********** 3.SehContact **********\n"); printf("********** 4.ShowContact *********\n"); printf("********** 5.MofContact **********\n"); printf("********** 6.SortContact *********\n"); printf("********** 0.ExitContact *********\n"); printf("********************************************\n"); } int main() { int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case AddContact: printf("增加联系人\n"); break; case DelContact: printf("删除联系人\n"); break; case SehContact: printf("查找指定联系人\n"); break; case ShowContact: printf("显示所有联系人\n"); break; case MofContact: printf("修改指定联系人的信息\n"); break; case SortContact: printf("对所有联系人进行排序\n"); break; case ExitContact: printf("退出通讯录!\n"); break; default: printf("选择错误,请重新选择!\n"); break; } } while (input); return 0; }
当case语句后面的情况多时,我们会忘记每种情况后面需要实现的函数功能,通过枚举常量,会有一个简单的提示,不需要我们翻上翻下就可以知道这种情况要实现的函数功能,大大减缓了写代码时的急躁心理。
枚举的知识点就这些,我们发现枚举常量的应用其实是相对简单的,所以好好学习啊伙伴们,下一篇博客我们学习联合体,下期再见!