2.11.4 枚举
2.11.4 枚举
枚举是用来给一些 int 值起名字的。
它的写法和结构体有点类似,但用途和储存方式与结构体完全不同。
其实,定义一个枚举,根本不会占用任何内存空间。它就只是让编译器认识一下,我把整数 1 起了一个名字叫 XXX , 2 起了一个名字叫 YYY ,等等。
定义
定义枚举数据类型: enum 集合名{内容};
例如
这样会让 JAN 是 0 的别名,FEB 是 1 的别名,以此类推。
如果想让 JAN 是 1 的别名,FEB 是 2 的别名,可以这样写:
枚举的应用
枚举的应用有很多,这里我们就用一个比较常见的状态管理来做例子
比如说,我们要做一个游戏,那么我就需要有一个主菜单界面,有一个游戏界面 或者还有什么其他各种乱七八糟的界面
我们可能有三种不同的界面,我们可以分别用 0 、 1 、 2 来指代它们。但它们其实应该有着有意义的名字,此时枚举就派上用场了。
我们就可以用枚举来实现不同界面之间的切换。
typedef enum GameScreen
{
MENU,
DIFFUCLTYCHOOSE,
SINGLEPLAYER
} gameScreen; // 不同情况下的屏幕界面,分别是主菜单、难度选择、单人游戏
// 游戏主循环
int main(void)
{
// 初始化部分
// 游戏主循环
while (/*游戏关闭前一直循环*/)
{
switch (currentScreen)
{
case MENU:
{
//主菜单对应函数
break;
}
case DIFFUCLTYCHOOSE:
{
//难度选择对应函数
break;
}
case SINGLEPLAYER:
{
//单人游戏对应函数
break;
}
}
}
return 0;
}
因为枚举定义出的是常量,所以它们可以用在 switch 语句的 case 中。