目录
1.枚举
枚举(enumeration)是一种用户定义的数据类型,用于定义具有离散取值的常量。枚举可以帮助提高代码的可读性和可维护性,使得程序员可以使用易于理解的符号来表示特定的取值范围。
枚举顾名思义就是一一列举,把所有的可能都列出来,就是枚举。
枚举的定义:枚举通过enum关键字定义,其语法为:
enum 枚举名 {
枚举成员1,
枚举成员2,
...
};
这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。
例如:
enum Color
{
RED=0,
GREEN=1,
BLUE=2
};
枚举类型的使用:定义枚举后,可以使用该枚举类型来声明变量,也可以将枚举成员作为常量来使用。
一下是一个用C语言实现的枚举的应用:
#include <stdio.h>
// 定义一个枚举类型 Weekday
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
int main() {
// 声明一个枚举类型的变量
enum Weekday today;
// 给枚举变量赋值
today = Wednesday;
// 使用枚举变量
printf("Today is ");
switch(today) {
case Monday:
printf("Monday");
break;
case Tuesday:
printf("Tuesday");
break;
case Wednesday:
printf("Wednesday");
break;
case Thursday:
printf("Thursday");
break;
case Friday:
printf("Friday");
break;
case Saturday:
printf("Saturday");
break;
case Sunday:
printf("Sunday");
break;
default:
printf("Invalid day");
}
return 0;
}
枚举的优点:
我们可以使用 #define 定义常量,为什么非要使用枚举?
1. 增加代码的可读性和可维护性
2. 与#define定义的标识符相比,枚举有类型检查,
3. 防止了命名污染(封装)
4. 便于调试
5. 使用方便,一次可以定义多个常量
2.联合
联合(union)是一种用户定义的数据类型,允许在同一内存位置存储不同的数据类型。联合中的成员共享同一块内存空间,但在任何给定的时刻只能存储其中的一个成员值。这种特性使得联合在某些情况下非常有用,例如需要在不同类型之间进行转换或者节省内存空间时。
联合体的定义:
union union_name {
member1_type member1_name;
member2_type member2_name;
...
};
联合体的大小:
1 .联合的大小至少是最大成员的大小。
2. 当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。