一、联合体
(一)定义:在C语言中允许多个不同变量共享同一内存区的功能成为联合(union)。声明联合的语法类似于结构,给联合指点标记名称的方式通常也是类似的。关键字 union 。示例代码如下:
union myValue{
int x;
int y;
double z;
};
//声明变量
union myValue value;
联合成员的访问方式和结构成员完全相同。例如:
value.x = 12;
value.y = 24;
value.z = 23.9;//最后一次赋值有效
注:
1.联合实例所占的字节数是其最大的成员所占的空间;
2.定义联合指针的方式与定义结构指针相同。通过指针访问联合成员的方式与结构相同。
(二)特点
不同类型的变量共同占有一段内存(相互覆盖),联合变量任何时刻只有一个成员存在。即 共享内存。
二、枚举
(一)定义:在编程时,常常希望变量存储一组可能值中的一个。例如一个变量存储当前月份的值。这个变量应只存储12个可能值中的一个,分别对应于1~12月。C语言中的枚举(enumeration)就用于这种情形。
利用枚举,可以定义一个新的 整数类型,该类型变量的值域是我们指定的几个可能值。下面的语句定义了一个枚举类型Weekday:
enum Weekday { Monday, Tuesday, Wednesday, Tursday, Friday, Saturday, Sunday};
这个语句定义了一个类型,而不是变量。
声明Weekday类型的一个新变量,并初始化它:
enum Weekday weekday = Monday;
也可以在定义枚举类型时,声明该类型的变量:
enum Weekday { Monday, Tuesday, Wednesday, Tursday, Friday, Saturday, Sunday} today , tomorrow ;
还可以在同一个语句中初始化变量:
enum Weekday { Monday, Tuesday, Wednesday, Tursday, Friday, Saturday, Sunday} today = Monday, tomorrow = today + 1;
tomorrow 的初始值比 today 大1。但是在执行这个操作时,要确保算数运算的结果是一个有效的枚举值。