9.9 C++共用体

举报
C语言入门到精通 发表于 2021/02/10 00:52:40 2021/02/10
【摘要】 C++共用体概述在C++中,会需要使几种不同类型的变量存放到同一段内存单元中,比如,将一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中,这3个变量在内存中占的字节数不同,但都从同一地址开始存放,这种使几个不同的变量共占同一段内存的结构,称为共用体类型的结构。声明共用体类型的一般形式为 union 共用体类型名 {成员表列 }; 定义共用体变量的一般形...

C++共用体概述

在C++中,会需要使几种不同类型的变量存放到同一段内存单元中,比如,将一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中,这3个变量在内存中占的字节数不同,但都从同一地址开始存放,这种使几个不同的变量共占同一段内存的结构,称为共用体类型的结构。

声明共用体类型的一般形式为

union 共用体类型名 {成员表列 };

定义共用体变量的一般形式为

共用体类型名 共用体变量名;

C++允许在声明共用体类型的同时定义共用体变量,也可没有共用体类型名而直接定义共用体变量。

//有共用体类型名
union data
{
  int temp;
  char charcter;
  double str;
}union_1,union_2;

//无共用体类型名
union 
{
  int temp;
  char charcter;
  double str;
}union_1,union_2;

C++结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其 自己的内存单元,共用体变量所占的内存长度等于 最长的成员的长度。

C++共用体变量的访问

C++不能引用共用体变量,而只能引用共用体变量中的成员。

union_1.temp;//引用共用体变量中的整型成员temp
union_1.character;//引用共用体变量中的字符型成员character
union_1.str;//引用共用体变量中的双精度成员str

C++使用共用体变量的目的是希望用同一个内存段存放几种不同类型的数据,在每一瞬时只能存放其中一种,而不是同时存放几种。

C++共用体类型的特点

  • 共用体变量的地址和它的各成员的地址都是同 一地址。
  • 不能对共用体变量名赋值。
  • 不能企图引用变量 名来得到一个值。
  • 不能在定义共用体变量时对它初始化。
  • 不能用共用体变量名作为函数参数。

C++能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。

9.9 C++共用体 mp.weixin.qq.com图标

文章来源: zhuanlan.zhihu.com,作者:小林C语言,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/341938031

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。