前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一道题明白什么是共用体

一道题明白什么是共用体

作者头像
用户6755376
发布2019-11-21 12:19:31
3570
发布2019-11-21 12:19:31
举报

关于共用体(联合体)的概念,感觉很多同学还是不够清楚的。上面这个全国二级C的选择,难度不大,但能很好的帮助我们理解这个概念。

正确答案是D。

为了便于理解,我们最后加了行代码(最后注释掉的代码)。运行,输出三个值。

经常会听到同学讲共用体某个成员存在,另一个不存在,一个成员的值覆盖了另一个成员,这些都是不准确的。共用体讲的就是成员共用存储空间的,涉及到不同成员与该共用体所占存储空间的对应关系。

大家应该都知道,结构体变量占的空间大小等于每个成员所占空间大小之和,共用体变量占的空间大小等于所有成员里面占空间最大的那个。

对于题目中共用体a的两个成员u、k,u有三个int类型的成员共占12字节,k只占4字节,所以总归给a分配了12字节的空间。下图展示了成员与这12字节空间的对应关系。

我们把这12字节分成3块,每块4字节。对于成员u,它的三个成员分别对应这3块。对于成员k,它只需要4字节,也就是第一块,和x是同一块。所以给k赋值,就相当于给x赋值了。

类似的,如果k是double类型,占8个字节,那k对应x、y两块,给k赋值会影响到x、y,具体x、y的值要看k前后4个字节分别是什么值。当然一般不会让大家计算这么复杂的情况。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机二级C语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档