1.共用体概念

    • C++语言允许不同的数据类型使用同一存储区域,即同一存储区域有不同类型的变量共同表示。这种数据类型称共用体。
    • 共用体的一般形式

    union 共用体名
    { 成员表列;
    }变量表列;

    • 例:

      1. union data
      2. { int i;
      3. char ch;
      4. float f;
      5. } a, b, c;
      6. union data a, b, c;
      • 这几个变量在共用体变量中存放在同一地址,相互覆盖,其长度为最长的成员的长度。
    • 共用体变量的引用

      • 不能整体引用共用体变量,只能引用变量中的成员。
      • 接上例:
        1. a.i;//表示为整型
        2. a.ch;//表示为字符型
        3. a.f;//表示为浮点型
    • 共用体变量的特定

      • 共用体的空间在某一时刻只有一个成员在起作 用。
      • 共用体变量中的成员是最后一次放入的成员
      • 共用体变量不能在定义时赋初值。
      • 共用体变量不能作为函数的参数或函数值,但 可使用指向共用体的指针变量。
      • 共用体可以作为结构的成员,结构体也可以作 为共用体的成员。
    • 共用体与结构体体的比较
      • 结构体变量所占内存是各成员占内存之和;共用 体所占内存等于最长成员所占内存;
      • 结构体各成员变量分别占有其自己的内存单元; 共用体变量所占共享存储单元。

    2.对共用体的访问

    • 规则:
      • 不能访问共用体变量,只能访问共用 体变量中的成员 ;
      • 输入输出中不能以整个共用体变量为 对象 。
    • 例:
      1. cout<<a; \\ 报错
      2. cout<<a.i; \\ 通过
      3. cout<<a.i<<a.h; \\ ?

    3.共用体类型数据的特定

    • 每一次只能存放联合中的一种变量,即每次只 有一种变量起作用;
    • 只能够访问共用体中最近一个被赋值的成员 ;
    • 共用体变量的地址和它的成员变量的地址都是 同一地址 ;
    • 不能:对共用体变量赋值;引用(&)共用体变 量;初始化;作函数参数