C++复合类型(四)

来源:互联网 发布:php一句话木马下载 编辑:程序博客网 时间:2024/05/20 00:35

4th 共用体

一个能存储多个指定类型中的一个的特殊结构体。

特征:能存储多个类型的数据,但是同一时间下只能存储一种类型的数据。

有点像杯子,可以装橙汁也可以装牛奶,但是它只能橙汁或牛奶,顶多就装个橙汁味的牛奶(或者说牛奶味的橙汁),但是绝对不可能左边装牛奶右边装橙汁。

 

共用体定义:

方法一:

union price

{

int p1;

double p2;

long p3;

float p4;

};

price pri;

方法二:

union price

{

int p1;

double p2;

long p3;

float p4;

}pri;

 

使用:

pri.p1=100;

//此时这个变量是整形的,里面的数据是100p2p3p4不占据空间。

pri.p2=99.98;

//这个时候,pri.p1的数据已经丢失了,这个变量是双精度型的,里面的数据是99.98

 

显然,共用体的长度是其最大成员的长度。而共用体的用途是可以在数据类型不确定的情况下节省空置的变量所占据的内存。

 

共用体和结构体混合:

struct fruit

{

std::string name;

int num;

union price

{

int p1;

double p2;

long p3;

float p4;

}pri;

};

fruit apple;

apple.pri.p1=16;

 

匿名共用体:

struct fruit

{

std::string name;

int num;

union price

{

int p1;

double p2;

long p3;

float p4;

};

};

fruit apple;

apple.p1=16;

//没有定义共用体名称作为中介,p1,p2,p3,p4是四个成员而不是一个成员,但是它们的地址相同。

By Little_Small_Joze and Katlynn 网络加速 kiwinimi.net

原创粉丝点击