联合体:
联合体和结构体一样,都可以由不同类型的成员变量组成,但是分配给联合体的内存空间至少是联合体中最大的成员变量的大小(保证存的下最大的成员变量)。联合体中的各个成员变量共用一个空间,因此,联合体也称共用体。联合体的关键字是union。
联合体的创建:
联合体的创建与结构体的创建类似
#include <stdio.h>
union un {
char i;
int m;
};
int main()
{
union un stem;
printf("%d", sizeof(stem));
return 0;
}
结果是4。
联合体的特点:
联合体中不同类型的成员变量共用一个内存空间,因此各个不同类型的成员变量却有相同的地址。那么,改变其中的一个变量,其它变量的值也会随之改变。
值得注意的是,联合体的最大空间是最大成员变量类型(强调的是最大的变量类型)的整数倍。
可以看到结果是8个字节,两个int类型的大小。
联合体与结构体类似,但是在某种特定情况下,使用联合体更节省空间。
枚举:
枚举就是确定变量的可能值,使得变量只能使用自己确定的值,否则会报错。
枚举的关键字是enum。以下是枚举的创建,与结构体、联合体相类似:
enum Day//星期几
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
enum Day day=Mon;//ture:只能取自己写的值进行赋值操作
enum Day day=1//error:1不是自己取的值
我们可以使用 #define 定义常量,为什么非要使用枚举?
枚举的优点:
1. 增加代码的可读性和可维护性 、
2. 和#define定义的标识符比较枚举有类型检查,更加严谨。
3. 便于调试,预处理阶段会删除 #define 定义的符号
4. 使用方便,⼀次可以定义多个常量
5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用