联合的存储

与联合变量关联的存储是联合的最大成员所需的存储。 在存储较小的成员时,联合变量可以包含未使用的内存空间。 所有成员都存储在同一内存空间中并以相同的地址开始。 每次将值赋给不同的成员时,都会重写存储的值。 例如:

union         /* Defines a union named x */
{
    char *a, b;
    float f[20];
} x;

按照声明的顺序,x 联合的成员是指向 char 值的指针、char 值和包含 float 值的数组。 由于 x 是联合的最长成员,因此为 f 分配的存储是 20 个元素数组 f 所需的存储。 由于没有与联合关联的标记,因此其类型是未命名的或“匿名的”。

请参阅

联合声明