共用体

union是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。

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

可以使用one4all变量来存储int,long或double,条件是在不同的时间进行:

one4all pail;
pail.int_val=15;
cout<<pail.int_val;
pail.double_val=1.38;
couy<<pail.double_vail;

某些时候使用共用体可以节省空间。例如:管理一个小商品目录,其中有一些商品ID为整数,另一些为字符串,可以使用共用体:

struct  widget
{
char brand[20];
int type;
union id
{
   long id_num;
   char id_char[20];
}id_val;
};
....

widget prize;
...
if(prize.type==1)
{
cin>>prize.id_val.id_num;
}
else
{
cin>>prize.id_val.id_char;
}

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

struct  widget
{
char brand[20];
int type;
union 
{
   long id_num;
   char id_char[20];
};
};
....

widget prize;
...
if(prize.type==1)
{
cin>>prize.id_num;
}
else
{
cin>>prize。id_char;
}

由于共用体是 匿名的,因此id_num和id_char被视为prize的两个成员,他们地址相同,所以不需要中间标识符id_val.

 

posted @ 2020-03-14 21:30  坦坦荡荡  阅读(243)  评论(0编辑  收藏  举报