在c++中,结构体(struct)和共用体(union)是两种很相似的复合数据类型,都可以用来存储多种数据类型,但是两者还有很大的区别。
结构体
1、结构体的作用
在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流,而是多种数据组合起来的一个整体,其表现形式就是一个结构体。
2、结构体的定义
结构体:是指定义相应的数据结构及相应的变量。
结构体如下所示,
其中,struct是结构体关键字,一定不能省略。
node是结构体名,可以省略,成为无名结构体。
结构体成员可以使基本类型或者构造类型。
3、特点
变量用“.”访问,指针用" ->"访问。eg. node.num = 1; node->ame = “abc”;
共用体
1、共用体的作用
用覆盖技术,几个变量相互覆盖,从而使几个不同变量共占一段内存的结构。共用体的所有成员都在一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量。
2、共用体的定义
共用体如下所示,
其中union是共用体关键字,不能省略。node是共用体名。
3、特点
用体内存长度是内部最长的数据类型的长度。
共用体的地址和内部各成员变量的地址都是同一个地址
主要区别
1、结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。
2、结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间。
3、共用体不能赋初值而结构体可以。
技术专区
- mybatis动态sql详解
- 用VHDL语言设计数据传输系统中的HDB3编码器
- 裸机程序如何驱动硬件?看前辈是怎么说的
- 应用面向对象编程SoC原则的典型示例
- 嵌入式开发之java常用开发工具介绍