C语言 枚举和结构体的区别(以及枚举应用实例)
枚举类型就相当于助记符,帮助程序员记忆的。
比如现在要画一张地图,用到红黄蓝绿四种颜色。为了存储方便,我们规定0=红,1=黄,2=蓝,3=绿。但是当编程到某一阶段时,程序员可能忘记了哪个数字具体对应哪种颜色,或者忘记了到底有多少个数字,这时他就要去查表,这样会耽误时间。此时就可以定义一个枚举类型enum color{Red,Yellow,Blue,Green},这样系统就会自动将0、1、2、3和这个枚举类型中的每个元素一一对应起来,程序员只需要记住"Red"、"Green"等单词即可,而且不会出现“4”之类的定义之外的数字。
但枚举类型使用起来也有很多限制,它是一种单独的数据类型,因此不能简单像数组那样操作,而且经常要用到类型转换。
枚举类型默认为是int类型,并默认为从0,1,2,3…递增排序,也可为属性赋值,也可改变枚举类型的int类型(如将其换成byte来减少内存的消耗)
结构体可以将有限个不同类型的属性变量组合在一起,与枚举类型不同之处是枚举类型内的都是同类型的属性变量,并且结构体可以有结构函数
在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。
以下代码定义了这种新的数据类型 - 枚举型
enum DAY
{
MON=1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:
typedef enum workday
{
saturday,
sunday = 0,
monday,
tuesday,
wednesday,
thursday,
friday
} workday;
此处的workday为枚举型enum workday的别名
实际应用举例
typedef enum hiARG_TYPE_E
{
/** ARG_TYPE_NO_PARA / ARG_TYPE_NO_OPT only canbe select one of them */
/** ARG_TYPE_STRING /ARG_TYPE_CHAR /ARG_TYPE_INT / ARG_TYPE_FLOAT only canbe select one of them */
ARG_TYPE_MUST = 1, /* Required Arg */
ARG_TYPE_NO_OPT = 2, /* No option is allowed(-XXX), only one parameter */
ARG_TYPE_NO_PARA = 4, /* Single, no parameter */
ARG_TYPE_STRING = 8, /* String */
ARG_TYPE_CHAR = 16, /* Char */
ARG_TYPE_INT = 32, /* Interger */
ARG_TYPE_FLOAT = 64, /* Float */
ARG_TYPE_HELP = 128, /**/
ARG_TYPE_SINGLE = 256, /* Solo Option, or return parse error */
ARG_TYPE_END = 512,
ARG_TYPE_BUTT = 1024,
ARG_TYPE_4BYTE = 0xFFFFFFFF
} ARG_TYPE_E;
上一篇: 【java学习】GUI 图形程序设计
下一篇: 面试题(Java)(一)
推荐阅读
-
C#语言基础——结构体和枚举类型全面解析
-
C语言中的共用体(union)和枚举(enum)
-
C语言自定义类型详解(结构体、枚举、联合体和位段)
-
C语言中的enum、struct、union——枚举类型、结构体、共用体
-
C语言集锦 | 03 - C语言的复合数据类型(typedef关键字、结构体、枚举体、共用体)
-
C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用
-
C语言 枚举enum、宏定义#define、结构体struct的一种联合应用
-
C语言中的共用体(union)和枚举(enum)
-
C#枚举 枚举和int以及string类型之间的转换 结构 重载 全局变量
-
C#语言基础——结构体和枚举类型全面解析