结构的定义
//结构中的位字段 //指定占用特定位数的结构成员
struct torgle_register{
unsigned int SN : 4;//4bit for SN value
unsigned int : 4;//4 bit unused 没用名称的字段来提供间距
bool goodIn : 1;
bool goodTorgle : 1;
};
共用体的定义
union one4all{
int int_val;
long long_val;
double double_val;
};
//共用体只能存储其中一种类型值(一次只能存储一种值)
one4all pail;
pail.int_val = 15;//store an int
pail.double_val = 1.35;//store a double, and int value is lost
结构可以同时存储不同类型的数据,共用体只能存储其中一种类型值(一次只能存储一种值)。
举个例子
声明一个商品的目录
struct widget{
char brand[20];
int type;
//有些商品的ID为整数,有些商品的ID为字符串
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;
//有些商品的ID为整数,有些商品的ID为字符串
union{
long id_num;
char id_char[20];
};
};
//使用
widget prize;
if(prize.type == 1)
cin>>prize.id_num;
else
cin>>prize.id_char;
上述两块代码作用完全相同