共用体类型

共用体类型可以在同一段内存单元存放不同类型的变量。一般形式为:

union 共用体类型名

{成员列表

}变量列表;如:

union Data
{
    int i;          //表示不同类型的变量i,ch,f能存放到同一段内存中
    char ch;
    float f;        
}a,b,c;            //在定义变量同时定义变量

共用体与结构体的区别

结构体变量所占用的内存长度是各成员所占的内存长度,每个成员都有自己的储存单元。而共用体变量所占的内存长度等于最长的成员所占的内存长度。如上面定义的共用体变量a,b,c各占4个字节而不是各占9个字节。

共用体类型数据的特点

(1)同一个内存段可以用来存放几种不同的类型成员,但在每一瞬间只能存放其中一个成员,而不是存放几个。

(2)可以对共用体成员进行初始化,但是初始化表中只能有一个常量。如:

union Data
{
	int i;
	char ch;
	float f;
} a={1,'a',1.5};			//错误,不能初始化3个成员,他们占用同一段存储单元 
union Data a={16};			//正确。对第一个成员初始化 
union Data a={.ch='j'};		//C99允许对指定的一个成员进行初始化 

(3)共用体变量中作用的成员是最后一次被赋值的成员,在对共用体变量中的一个成员赋值后,原有变量存储单元的值就被取代。

a.ch='a';
a.f=1.5;
a.i=40;

完成三个赋值运算后变量存储单元中的值为40,原来的值都被覆盖了,此时如果用printf("%d",a.i);输出结果为40。而如果用printf("%c",a.ch);则输出的值不是'a',而是'('。

(4)共用体变量的地址和它的成员的地址都是同一个地址。

(5)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。

(6)C99允许共用体变量作为函数参数

(7)共用体变量可以出现在结构体类型定义中,也可以定义共用体数组,反之也是一样。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_嘉木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值