C语言构造类型之共用体与枚举
1.共用体
常用于 查找
定义;关键字 union + 共用体名 //类比结构体 关键字struct + 结构体名
共用体的内存大小只和最大的元素大小有关
共用体大部分操作和结构体一样
特别提醒:对于共用体,其只要一个内存,不可以按照结构体初始化的方式对所有成员变量进行初始化
共用体依然可以使用字节对齐和位域
#pragma pack(1)
union Message{
int number:1;
char sex:1;
double money:1;
};
2.枚举
关键字enum + 枚举名
枚举本质为正整数类型,数值依次加1
可以为枚举元素指定其值为多少
enum Weekday{
Monday=9,Tuesday
};
enum Weekday w1=Tuesday;
printf("%d\n",w1);
输出为10;
3. code union_enum.c
#include<stdio.h>
union Message{
int number;
char sex;
double money;
}mm;
enum Weekday{
Monday=9,Tuesday
};
int main(){
union Message m1={0};
printf("%lu\n",sizeof(m1)); //输出枚举的大小
mm.money=100;
printf("%d\n",w1); //输出Tuesday的值,验证枚举本质为正整数,数值依次加一
输出为10; //Monday初始化为9,Tuesday=9+1,输出为10
return 0;
}