找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1326|回复: 1
打印 上一主题 下一主题
收起左侧

C语言:共用体-阅后即焚的变量

[复制链接]
跳转到指定楼层
楼主
共用体-阅后即焚的变量

union共用体即它内部的成员,存储在同一个地址空间中。


通过图示,比较生动的让大家看到,不论来了多少个成员,所有成员只能存储在同一个地址空间中。那么地址空间的大小具体应该是多大呢?

地址空间的大小取决于最大的数据类型,最大的数据类型有多大,共用体数据的大小就有多少:



从图示代码中,可以明确的看到,共用体变量的大小,取决于共用体成员中最大的数据类型,即当最大的是int型整型变量的时候,共用体大小就为4字节,当为double类型的时候,共用体大小就变成了8字节。

那么接下来再带大家看一下,我们今天的重点,也是对于新手而言比较容易入坑的点,小李将这个特点称为-“阅后即焚的变量”。


从代码中,我们可以看到,当我们对公用体的第二个成员赋值之后,再看共用体的第一个成员值,也被改变了。这就是对于共用体的成员都存在同一个地址空间的体现。一个char型变量有8位,当我们赋值之后,系统就会在共用体空间的低八位进行存储。从而之前存储的内容就被覆盖了。


总结,共用体的成员全部存储在一个空间中,所以对于成员的使用,必须要即配即用,阅后即焚,在一个成员赋值之后,其它的成员的值都会由于公用地址空间的原因受到影响

评分

参与人数 1黑币 +15 收起 理由
1109 + 15 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57414 发表于 2022-8-24 17:23 | 只看该作者
图文并茂,很精彩,谢谢楼主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表