Menu Close

结构体(struct) 和共同体(union)的区别

下表是结构体和共同体的主要区别。

Structure (结构体) Union  (共同体)
您可以使用struct关键字来定义结构体。 您可以使用union关键字定义共同体。
结构体中的每个成员都被分配一个唯一的存储位置。 在共同体中,所有数据成员共享一个内存位置。
更改一个数据成员的值不会影响结构中的其他数据成员 更改一个数据成员的值将更改其他数据成员的值。
它使您可以一次初始化多个成员。 它使您仅可以初始化第一个成员
结构的存储空间大小是每个数据成员的存储空间大小之和 共同他空间的总大小是最大数据成员的大小。
它主要用于存储各种数据类型。 它主要用于存储可用的多种数据类型中的一个数据类型。
占用的空间是每个成员的空间 占用空间是最大成员占用的空间
你可以收到任何一个成员的值 你一次只能接收一个成员的值
它支持数组。 它不支持数组

结构体优势

这是使用结构的优点/好处:

  • 结构在同一位置收集有关同一主题的多个数据。
  • 当您要收集类似数据类型和参数(例如名字,姓氏等)的数据时,这将很有帮助。
  • 这很容易维护,因为我们可以使用单个名称表示整个记录。
  • 利用结构体,我们可以用单个参数将完整的记录集传递给任何函数
  • 您可以使用结构数组来存储更多类似类型的记录。

 

共同体优势

这里是使用共同体的优点/好处:

  • 与结构体相比,它占用的内存更少。
  • 使用union时,只能直接访问最后一个变量。
  • 两个或多个数据成员使用相同的存储位置时,你可以使用共同体。
  • 只能保存一个数据成员的数据
  • 它分配的空间等于数据最大成员的空间大小。

 

结构体的缺点

这是使用结构的缺点:

  • 如果IT项目的复杂性超出了限制,则将变得难以管理。
  • 代码中一个数据结构的更改需要在许多其他位置进行更改。 因此,更改变得难以跟踪。
  • 结构体运行速度较慢,因为它需要检查所有数据的存储空间。
  • 您一次可以访问结构中的任何一个成员,而一次只可以访问共同体中的一个成员。
  • 结构体支持数组

共同体的缺点

这是使用共同体的缺点:

  • 您一次只能使用一位共同体成员。
  • 所有共同体变量均不能一次初始化或与不同值一起使用。
  • 共同体为其所有成员分配一个公共存储空间。