Skip to content

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;