3 联合体 & 枚举 & 自定义类型
联合体
形如
c
union Union_name {
int a;
double b;
char c;
};
union Union_name demo;
和 结构体 struct
有什么区别?
结构体
各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个 struct 变量的总长度等于所有成员的长度之和。
联合体
各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权 (对该内存的读写),各变量共用一个内存首地址。任一时刻只有一个成员的数据是有意义的,即 a、b、c 不能同时存在。
枚举
形如
c
enum color { red, orange, yellow, green, blue, purple };
enum color x, y, z;
不可对枚举元素赋值,因为枚举元素本身就是常量。
合法赋值 x=red y=(enum color)4
等价于 x=red y=green
非法赋值 z=Monday
自定义类别
形如
C
typedef 原类型名 新类型名 typedef char unint8_t;
即 char a;
等价于 uint8_t a;