枚举类型与结构体的区别 |
您所在的位置:网站首页 › 结构类型有什么 › 枚举类型与结构体的区别 |
一、枚举类型: 1.1、定义: 是指将变量的值一 一列出来,变量的值只限于列举出来的值的范围内; 1.2、使用格式: 举例说明: enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; 格式注意事项说明: 1.2.1、枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。 1.2.2、DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。 1.2.3、 未认为设定枚举成员值时,第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。 1.2.4、可以人为设定枚举成员的值,从而自定义某个范围内的整数。 1.2.5、 枚举型是预处理指令#define的替代。 1.2.6、类型定义以分号;结束。 1.3、枚举的优点 1.3.1、增加代码的可读性和可维护性 1.3.1、和#define定义的标识符比较枚举有类型检查,更加严谨 1.3.1、防止了命名污染(封装) 1.3.1、便于调试 1.3.1、使用方便,一次可以定义多个常量 那这样做的好处是什么呢? 举例说明: 看以下代码: int chose; printf("%d",&chose); switch (chose) { case 1: Add(); //执行加法 break; case 2: Sub(); //执行减法 break; case 3: Mul(); //执行乘法 break; case 4: Div(); //执行除法 break; case 0: return 0; //退出 } 这是一个建议计算器的选择模块,如果使用 switch 语句,后面的 case后面的数字代表不同的算法。像以上代码,如果算法增加到即使或者更多,那么,数字和算法可能会匹配乱掉,但是,如果改为用枚举变量,那么代码的可读性以及思路清晰程度会大大提高。如下: enum shose { EXIT, ADD, SUB, MUL, DIV }; int chose; printf("%d",&chose); switch (chose) { case ADD: Add(); //执行加法 break; case SUB: Sub(); //执行减法 break; case MUL: Mul(); //执行乘法 break; case DIV: Div(); //执行除法 break; case EXIT: return 0; //退出 } 这就很清楚的体现了枚举类型的用途; 二、结构体类型 2.1、定义: 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。 2.2、结构体的格式形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体定义的三种方式: 第一种:只有结构体定义 struct stuff{ char job[20]; int age; float height; }; 第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义 //直接带变量名Huqinwei struct stuff{ char job[20]; int age; float height; }Huqinwei; 也许初期看不习惯容易困惑,其实这就相当于: struct stuff{ char job[20]; int age; float height; }; struct stuff Huqinwei; 第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用 struct stuff yourname; 去定义第二个变量。 那么,附加变量初始化的结构体定义还可进一步简化出第三种: 把结构体名称去掉,用匿名结构体直接定义一个结构体对象(习惯用对象这词了),这样更简洁,不过也不能定义其他同结构体变量了——除非用typeof。 struct{ char job[20]; int age; float height; }Huqinwei; 2.3 结构体总结: 结构体的内存对齐是拿空间来换取时间的做法。 那在设计结构体的时候,我们既要满足对齐,又要节省空间,如何做到:让占用空间小的成员尽量集中在一起 结构体可以是不同类型的集合;
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |