联合(union)

联合(union)

 

1.联合说明和联合变量定义

联合也是一种新的数据类型,它是一种特殊形式的变量。

联合说明和联合变量定义与结构十分相似。其形式为:

union联合名{

数据类型成员名;

数据类型成员名;

...

}联合变量名;

联合表示几个变量公用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。

下例表示说明一个联合a_bc:

uniona_bc{

inti;

charmm;

};

再用已说明的联合可定义联合变量。

例如用上面说明的联合定义一个名为lgc的联合变量,可写成:

uniona_bc lgc;

在联合变量lgc中,整型量i和字符mm公用同一内存位置。

当一个联合被说明时,编译程序自动地产生一个变量,其长度为联合中最大的变量长度。

联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,但定义为指针时,也要用"->"符

 

号,此时联合访问成员可表示成:

联合名->成员名

另外,联合既可以出现在结构内,它的成员也可以是结构。

例如:

struct{

intage;

char*addr;

union{

inti;

char*ch;

}x;

}y[10];

若要访问结构变量y[1]中联合x的成员i,可以写成:

y[1].x.i;

若要访问结构变量y[2]中联合x的字符串指针ch的第一个字符可写成:

*y[2].x.ch;

若写成"y[2].x.*ch;"是错误的。

转载于:https://www.cnblogs.com/xuq22/archive/2011/05/26/3769332.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值