联合体基本概念
联合体的外在形式跟结构体非常类似,但它们有一个本质的区别:结构体中的各个成员是各自独立的,而联合体中的各个成员却共用同一块内存,因此联合体也称为共用体。
联合体各成员的堆叠效果
联合体内部成员的这种特殊的“堆叠”效果,使得联合体有如下基本特征:
-
整个联合体变量的尺寸,取决于联合体中尺寸最大的成员。
-
给联合体的某个成员赋值,会覆盖其他的成员,使它们失效。
-
联合体各成员之间形成一种“互斥”的逻辑,在某个时刻只有一个成员有效。
联合体的定义:
union 联合体标签 { 成员类型1 成员变量名1; 成员类型2 成员变量名2; ... 成员类型n 成员变量名n; };
-
语法:
-
联合体标签,用来区分各个不同的联合体。
-
成员,是包含在联合体内部的数据,可以是任意的数据类型。
-
共用体与结构体最大的区别:
结构体所占内存大小 >= 各成员变量之和; 共用体所占内存大小是各成员变量中最大的那个。
注意:
共用体的存储空间是各成员之间共用的, 同一时刻只能用一个成员变量,为了节省内存才提出 共用体。
-
union Num { int a; char b[32]; };// union Num 是新类型的名字 union Sex { char a; int b; char c[4]; };// union Sex 是