共用体
共用体类型,使几个不同类型的变量共享同一段类型的结构。
就是共用体里面所描述的类型都是共享一个地址空间,并且同一个时刻只能用一个类型的值。
union 共用体名
{
int i; //成员列表
char ch;
float f;
}a,b,c; //变量列表
union data
{
int i; //成员列表
char ch;
float f;
}; //变量列表
union data a,b,c;
union //无名共用体
{
int i; //成员列表
char ch;
float f;
}a,b,c; //变量列表
共用体与结构体
相同点:定义形式相似,在引用的时候,也是通过引用变量的成员。
异同点:含义不一样,结构体所占内存长度是各成员所占内存空间之和,每个成员有自己的内存空间;共用体,它的内存空间等于最长成员的长度,成员们共用一个内存区。
共用体注意事项
- 共用体变量中起作用的成员是最后一次被赋值的;
- 共用体和其成员是同一个单元;
- 同类型间共用体可以用来赋值,共用体变量可作为函数参数;
- 共用体类型可以出现在结构体类型定义中,反之亦然。
枚举
def:如果一个变量只有几中可能的值,则可以定义为枚举类型,把可能的值一一例举出来,那么变量的值只限于例举出来值范围之内。
枚举类型: enum [枚举名]{枚举元素列表}
eg:
enum {sun,mon,tue,wed,thu,fri,set}weekday,weekend;
枚举注意事项
- c编译对枚举类型的枚举元素按常量处理,也称枚举常量;
- 每一个枚举元素都代表一个整数;
- 枚举元素可以用来比较。