结构和联合的区别

本文详细对比了结构和联合这两种数据组织方式的区别,并通过一个具体的C语言示例加深理解:结构可以同时存储所有成员,而联合在同一时刻仅能存储一个被选中的成员;对联合的不同成员赋值会相互覆盖,而结构成员间赋值则互不影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构和联合有下列区别:

1.结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员,而

结构的所有成员都存在。

2.对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互

不影响的。

下面举一个例了来加对深联合的理解。

例4:

main()

{

union{/*定义一个联合*/

inti;

struct{/*在联合中定义一个结构*/

charfirst;

charsecond;

}half;

}number;

number.i=0x4241;/*联合成员赋值*/

printf("%c%c\n",number.half.first, mumber.half.second);

number.half.first='a';/*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n",number.i);

getch();

}

输出结果为:

AB

6261

从上例结果可以看出:当给i赋值后,其低八位也就是first和second的值;当给first和second赋字符后,这两个

 

字符的ASCII码也将作为i的低八位和高八位。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值