【C语言进阶】联合(共用体)

本文介绍了C语言中联合(共用体)的定义,包括其声明方式、定义特点以及如何理解其成员共享内存空间的概念。作者通过实例说明了联合与结构体的区别,并强调了联合的使用限制。
摘要由CSDN通过智能技术生成

 

文章目录


前言

    随着C语言学习的深入,我们了解了自定义类型,有结构体、枚举、联合,下面就为大家介绍一下联合(共用体)。


一、联合是什么?

联合是一种特殊的自定义类型,这种类型的变量也包含一系列的成员,联合的特征时这一系列成员共用同一块空间(所以联和也叫共用体)。

二、使用步骤

1.联合类型的声明

联合类型的声明跟结构体类似。 

2.联合类型的定义

 联合类型的变量跟结构体同样类似。

3.联合类型的特点

  联合体的成员是共用同一块内存空间的,这样一个联合变量的大小至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员),也有一定节省空间的作用。

 问题:怎么理解共用同一块内存呢?

   我们首先声明一个联合类型

     union  nn
      {
            int a;
            char b;
        };

   union  nn  u;

   printf("%d",sizeof(u));

     我们想一想联合变量u多大呢?

猜想:我们先猜想一下联合成员有两个a和b,a占4个字节,b占1个字节,那么u至少得5个字节吧。 

                                                        猜想结果 

显然猜想错误,为什么呢?

我们先分别看下他们的地址

 它们的地址是相同的。其实是因为b和a有一个字节是共用的、共享的,就像共享单车、共享充电宝一样。

图中蓝色就是a,b共用的字节。在使用时如果我们要用a,那么a就占了这个字节,如果我们要使用b,那么b就占了这个字节。

注意:a,b不能同时占用这个字节,就像共享单车一样,两个人不能同时扫一辆共享单车。

   . 联合的使用跟结构体的使用类似。 

           我的分享也到此结束啦!

要是我的分享也能对你的学习起到帮助,

那简直太酷啦!

若有不足,还请大家多多指正,我们一起学习!

公主、王子请:点赞——>收藏——>关注

感谢大家的观看与支持!

祝大家学业有成,得偿所愿,开开心心!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值