——可用于存储多种数据类型数据,但只能同时存储其中一种的一个值

union one4all
{
int int_val;
long long_val;
double double_val;
};

one4all pail;
pail.int_val = 15; // store an int
cout << pail.int_val;
pail.double_val = 1.38; // store a double, int value is lost
cout << pail.double_val;
  pail有时可以是int变量,有时可以是double变量...由于共用体每次只能存储一个值,因此共用体的长度为其最大成员的长度。

用途:
当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间;它常用于操作系统数据结构或硬件数据结构。

匿名共用体:
——匿名共用体没有名称,其成员将成为位于相同地址处的变量。每次只有一个成员是当前的成员

struct widget
{
char brand[20];
int type;
union
{
long id_num; // anonumous union
char id_char[20]; // other widgets
};
...
widget prize;
...
if (prize.type == 1)
cin >> prize.id_num;  // 使用变量id_num
else
cin >> prize.id_char;  // 使用变量id_char
  由于共用体是匿名的,因此id_num和id_char被视为prize的两个成员,它们的地址相同,所以不需要中间标识符id_va
深圳网站建设www.sz886.com