引入
如果想在一段内存单元,存放不同类型的变量,如
整型
字符型
实型变量
存放在同一个地址开始的内存单元。
该怎么办?
这时,就需要共用体类型,整型、字符型、实型变量所占用的字节数是不同
的,如果要在同一个内存地址开始,势必意味着后一个数据要覆盖前一个数据。
我们称这种使几个不同的变量共享同一段内存的结构,为共用体
类型的结构。
共用体也可以顾名思义,共用一段内存开始地址的共用体
共用体类型
一般形式
union 共用体名
{
成员表列
} 变量表列; (注意有分号)
如:
1 | union Data{ |
上面就是在声明共用体的同时定义变量。
1 | union Data{ |
上面是先声明共用体,再定义;
1 | union { |
因为没有共用体名,只能在声明的时候定义。
从上面的例子我们不难看出,共用体和结构体的声明和定义方式差不多,但他们的含义是不同的。
内存长度
结构体:占用内存的长度是各个成员占的内存长度之和。每个成员都有自己的内存单元。
共用体:占用内存的长度是成员中长度最长的成员的长度。
引用共用体变量
只有先定义了共用体变量,才能引用它,但需要注意,不能引用共用体变量,只能引用其成员
。
1 | union Data{ |
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。