9.9 C++共用体

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++共用体

更多案例可以go公众号:C语言入门到精通

正文完