一、枚举类型:
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 结构体总结:
结构体的内存对齐是拿空间来换取时间的做法。
那在设计结构体的时候,我们既要满足对齐,又要节省空间,如何做到:让占用空间小的成员尽量集中在一起
结构体可以是不同类型的集合;