共用体

Posted liu6666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共用体相关的知识,希望对你有一定的参考价值。

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.

 

以上是关于共用体的主要内容,如果未能解决你的问题,请参考以下文章

C语言-枚举共用体

结构体共用体和枚举类型

C语言之共用体类型

C++中为何不能对共用体变量名赋值?

USRP通信的结构体和常量(上位机下位机共用)

C语言 | 共用体概述