欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习!
点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C语言感兴趣的朋友!
枚举,顾名思义,就是将可能的取值一一列举。
在现实生活中,很多事物的取值范围是有限的,可以使用枚举来定义,例如:
enum Day // 星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
enum Sex // 性别
{
MALE,
FEMALE,
SECRET
};
enum Color // 颜色
{
RED,
GREEN,
BLUE
};
在以上定义的 enum Day
、enum Sex
、enum Color
中,{}
内的内容是枚举类型的可能取值,也叫枚举常量。
枚举常量默认从 0
开始,依次递增 1
,但也可以自定义初始值,如下:
enum Color // 颜色
{
RED = 1,
GREEN = 2,
BLUE = 4
};
我们可以使用 #define
定义常量,为什么非要使用枚举?
枚举的优点包括:
#define
,枚举具有类型检查功能,更加严谨enum Color // 颜色
{
RED = 1,
GREEN = 2,
BLUE = 4
};
enum Color clr = GREEN; // 只能用枚举常量赋值,保证类型安全
注意: 避免直接使用枚举常量的整数值赋值给枚举变量,否则可能出现类型不匹配问题。
联合类型的变量也包含一系列的成员,不同之处在于所有成员共用同一块存储空间,因此联合也被称为共用体。
union Un
{
char c;
int i;
};
union Un un;
#include
union Data
{
int i;
float f;
char str[20];
};
int main()
{
union Data data;
data.i = 10;
printf("data.i: %d\n", data.i);
data.f = 220.5;
printf("data.f: %f\n", data.f);
strcpy(data.str, "Hello");
printf("data.str: %s\n", data.str);
return 0;
}
在上述代码中,data
变量存储 int
、float
、char
三种类型的数据,但由于它们共用同一块内存,每次存储新的值会覆盖先前存储的值。
特性 | 枚举(enum) | 联合(union) |
---|---|---|
目的 | 定义一组有限的离散值 | 节省存储空间,多个变量共用一块内存 |
存储 | 每个枚举值独占存储空间 | 所有成员共享存储空间 |
用途 | 适用于表示固定的类别、状态等 | 适用于需要在不同时间存储不同类型数据的场景 |
合理选择枚举和联合,可以使代码更加高效、清晰和易维护。