### 共用体类型

共用体类型提供了一种机制，使得多个变量（公用体中的成员）可以共享同一个内存地址。

例如，下面的代码定义了一个共用体类型 unType。

union unType

{

char cdata;

int idata;

};

定义共用体与定义结构体类似，只是关键字不同，共用体使用 union 关键字。在共用体 unType 中，成员 cdata 与 idata 的内存起始位置相同，如图 1 所示。

图 1 共用体成员内部布局示意图

由于共用体成员公用内存空间，因此如果试图改变了一个共用体成员的值，其他成员的值也会发生改变。但是，对于共用体来说，通常一次只需要使用一个成员。当定义一个共用体变量时，编译器会根据共用体成员中占用最多内存空间的变量分配空间，这样使得共用体中所有成员的都能够获得足够的空间。例如，定义一个 unType 类型的变量 tg，编译器将为其分配 4 个字节的空间，因为 idata 需要 4 个字节的空间，cdata 只需要 1 个字节的空间。

注意：共用体变量同样需要声明后才能用，而且不能直接引用共用体变量，只能引用共用体变量中的成员。