C语言自定义类型之枚举

C语言中的自定义类型有三种,一个结构体,一个枚举,还有一个联合体,在这一篇博客里,我们先学习枚举类型。


目录

1.枚举的定义

2.枚举的优点

3.枚举的使用


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语句后面的情况多时,我们会忘记每种情况后面需要实现的函数功能,通过枚举常量,会有一个简单的提示,不需要我们翻上翻下就可以知道这种情况要实现的函数功能,大大减缓了写代码时的急躁心理。


枚举的知识点就这些,我们发现枚举常量的应用其实是相对简单的,所以好好学习啊伙伴们,下一篇博客我们学习联合体,下期再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月亮夹馍干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值