共用体和结构体的区别

  在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常用开发工具介绍
  • 共用体和结构体的区别已关闭评论
    A+
发布日期:2019年07月14日  所属分类:物联网