1.共用体概念
- C++语言允许不同的数据类型使用同一存储区域,即同一存储区域有不同类型的变量共同表示。这种数据类型称共用体。
- 共用体的一般形式
union 共用体名
{ 成员表列;
}变量表列;
例:
union data
{ int i;
char ch;
float f;
} a, b, c;
union data a, b, c;
- 这几个变量在共用体变量中存放在同一地址,相互覆盖,其长度为最长的成员的长度。
共用体变量的引用
- 不能整体引用共用体变量,只能引用变量中的成员。
- 接上例:
a.i;//表示为整型
a.ch;//表示为字符型
a.f;//表示为浮点型
共用体变量的特定
- 共用体的空间在某一时刻只有一个成员在起作 用。
- 共用体变量中的成员是最后一次放入的成员
- 共用体变量不能在定义时赋初值。
- 共用体变量不能作为函数的参数或函数值,但 可使用指向共用体的指针变量。
- 共用体可以作为结构的成员,结构体也可以作 为共用体的成员。
- 共用体与结构体体的比较
- 结构体变量所占内存是各成员占内存之和;共用 体所占内存等于最长成员所占内存;
- 结构体各成员变量分别占有其自己的内存单元; 共用体变量所占共享存储单元。
2.对共用体的访问
- 规则:
- 不能访问共用体变量,只能访问共用 体变量中的成员 ;
- 输入输出中不能以整个共用体变量为 对象 。
- 例:
cout<<a; \\ 报错
cout<<a.i; \\ 通过
cout<<a.i<<a.h; \\ ?
3.共用体类型数据的特定
- 每一次只能存放联合中的一种变量,即每次只 有一种变量起作用;
- 只能够访问共用体中最近一个被赋值的成员 ;
- 共用体变量的地址和它的成员变量的地址都是 同一地址 ;
- 不能:对共用体变量赋值;引用(&)共用体变 量;初始化;作函数参数