共用体和结构体的区别,共用体

 在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、共用体不能赋初值而结构体可以。

相关推荐

相关文章