结构(structure)和联盟(union)的区别

在C语言中,结构和联合都是用户定义的数据类型,在概念上是相同的,但是它们在某些方面还是不同的,比如内存分配给成员的方式。它们的声明类似,但功能不同。它们允许用户在一个名称下组合不同的数据类型。当声明结构变量时,每个成员使用单独的内存位置,而union变量的不同成员共享相同的内存位置。让我们研究一下结构和结合的区别是细节。...

在C语言中,结构和联合都是用户定义的数据类型,在概念上是相同的,但是它们在某些方面还是不同的,比如内存分配给成员的方式。它们的声明类似,但功能不同。它们允许用户在一个名称下组合不同的数据类型。当声明结构变量时,每个成员使用单独的内存位置,而union变量的不同成员共享相同的内存位置。让我们研究一下结构和结合的区别是细节。

结构(structure)和联盟(union)的区别

什么是结构(structure)?

结构只是C中另一种用户定义的数据类型,它允许用户将不同类型的数据类型组合成一个内存块中的单一类型。一个结构可以包含相互关联的简单数据类型和复杂数据类型,否则就没有意义了。结构中的每个成员都有自己的内存位置,因此可以随时访问和检索它。

当大量数据需要分组时,可以使用一种结构,比如一个目录存储一本书中许多成员的信息,或者一个地址簿存储一个联系人的所有信息——姓名、地址、联系电话等等。每个成员的地址将按升序排列,这意味着每个成员的内存将从不同的偏移值开始。更改一个成员的值不会对其他成员产生任何影响。

“struct”关键字用于在单个名称下定义不同数据类型的结构。例如,如果要创建员工数据库,则需要在单个实体下存储员工的姓名、年龄、电话和薪资详细信息。这是通过关键字'struct'完成的,然后它告诉编译器已经声明了一个结构。

结构员工{

字符串名称;

串龄;

字符串电话;

字符串工资;

}emp1,emp2;

这里,“employee”是结构的名称,创建了两个类型为“employee”的变量“emp1”和“emp2”。右大括号后面必须跟一个分号(;)。

结构的成员可由两种类型的运算符访问:

  1. 成员运算符
  2. 结构指针运算符

什么是联盟(union)?

它是C语言中使用的一种特殊数据类型,允许用户在同一内存位置存储不同类型的数据。联合与结构非常相似,可以通过将关键字“struct”替换为关键字“union”来定义它。成员在一个联合体中相互重叠,其大小足以容纳所有成员。

当一个变量与union关联时,编译器通过考虑最大内存的大小来分配内存,因此union的大小等于最大数据成员的大小。可以用许多成员定义联合,但在任何给定的时间实例中,只有一个成员包含值。

联合的所有成员的地址都是相同的,这意味着每个成员都从相同的偏移量值开始。改变一个成员的值会影响其他成员的值。当您希望存储属于多种数据类型之一的内容时,可以使用联合。

工会雇员{

字符名[32];

智力;

浮动工资;

};

这里关键字'union'定义了与结构声明非常相似的union。变量可以存储一个字符串值,即“雇员的姓名”,一个整数值,即“雇员的年龄”,或者一个浮点数,表示“雇员的工资”。

结构与结合的区别

1.关键词

关键字“struct”用于定义结构,而“union”关键字用于定义联合。

2.内存分配

为结构中的成员分配单独的内存空间,并且成员具有不共享内存的不同地址。另一方面,联合为其所有成员共享相同的内存空间,因此分配共享内存位置。

3.会员接入

联合一次为其所有成员存储一个值,使得一次只能访问一个成员。而多个值可以存储在一个结构中,因此可以随时访问和检索任何成员值。

4.尺寸

结构的大小等于所有构件或多个构件的大小之和,而联合体的大小等于最大构件的大小。

5.初始化

在一个结构中,可以一次初始化多个成员,而在联合中,只能用其类型的值初始化第一个成员。

5.价值

一个结构可以存储所有成员的不同值,并且一个成员的值的更改不会对其他成员的值产生任何影响。一个联合为它的所有成员存储相同的值,一个成员的值的变化会影响另一个成员的值。

结构与联合

结构 工会
Struct关键字用于定义结构。 Union关键字用于定义联合。
成员在结构中不共享内存。 成员共享联合中的内存空间。
可以在结构中随时检索任何成员。 在联合中一次只能访问一个成员。
一个结构的几个成员可以同时初始化。 只能初始化第一个成员。
结构的尺寸等于每个构件的尺寸之和。 工会的规模等于最大成员的规模。
改变一个成员的值不会影响另一个成员的值。 一个成员值的更改将影响其他成员值。
为所有成员存储不同的值。 为所有成员存储相同的值。

总结

  • 结构和联合都是C中用户定义的数据类型,它们在功能和概念上是相同的,但在某些方面是完全不同的。
  • 两者都包含不同数据类型的变量,但它们在声明变量和访问成员时使用相同的语法。当结构由'struct'关键字定义时,联合由关键字'union'定义。
  • 每个成员在一个结构中获得单独的内存位置,而在联合中,总内存空间相当于最大大小的成员。所有成员在联合**享相同的内存空间。
  • 任何序列中的任何成员都可以在结构中访问,而在联合中,只能访问最近存储了其值的变量。

  • 发表于 2021-06-25 02:21
  • 阅读 ( 182 )
  • 分类:IT

你可能感兴趣的文章

联盟(union)和sqlserver中的union all(union all in sql server)的区别

...数据冗余以实现数据一致性。sqlserver就是这样一种DBMS。结构化查询语言(SQL)是数据库管理系统中管理数据的语言。Union和Union all是SQL中的两个命令,它们有助于在表数据中执行set操作。 目录 1. 概述和主要区别 2. SQL Server中的...

  • 发布于 2020-10-18 10:13
  • 阅读 ( 233 )

结构(structure)和c中的并集(union in c)的区别

...较-表格形式的C中的结构与并集 6. 摘要 什么是c中的结构(structure in c)? 结构是C语言中用户定义的数据类型,它有助于组合不同类型的数据项。结构可以表示记录。学生可以有student_id、student_name等,而不是分别存储每个变量,所...

  • 发布于 2020-10-19 06:29
  • 阅读 ( 179 )

联盟(union)和联盟(league)的区别

联盟对联盟 联盟和联盟的区别应该被仔细理解,因为联盟和联盟是两个经常被混淆为表示相同意思的词。事实并非如此。联合和联盟是两个不同的词,有两种不同的意思。Union通常用作名词,而league有时也用作动词。作为一...

  • 发布于 2020-11-05 10:30
  • 阅读 ( 356 )

民事联盟(civil union)和结婚(marriage)的区别

...婚期间以及在未来和子女保护方面的保护。 什么是民事联盟(civil union)? 民事结合允许同***像正常夫妻一样缔结婚姻关系。这一切都始于1989年的丹麦,当时联邦**合法承认同性婚姻,此后,更多的国家以不同的名义效仿。尽管...

  • 发布于 2020-11-05 19:05
  • 阅读 ( 720 )

民间联盟(civil union)和同性婚姻(gay marriage)的区别

公民联盟与同性婚姻 毫无疑问,与同性婚姻相比,关于民事结合的确切含义有很多困惑。当一些政客声称支持一方,比如说民间联盟,同时又反对另一方时,情况并没有得到任何改善。婚姻被定义为世界上几乎所有**都正式承...

  • 发布于 2021-06-22 19:46
  • 阅读 ( 221 )

结构(structure)和联盟(union)的区别

...让我们研究一下结构和结合的区别是细节。 什么是结构(structure)? 结构只是C中另一种用户定义的数据类型,它允许用户将不同类型的数据类型组合成一个内存块中的单一类型。一个结构可以包含相互关联的简单数据类型和复杂...

  • 发布于 2021-06-25 02:21
  • 阅读 ( 182 )

联盟(union)和交叉(intersection)的区别

在理解两个集运算符并和交之间的区别之前,让我们先了解集合论的概念。集合论是数学的一个基本分支,它研究集合,特别是一个对象是否属于某种数学上相关的一组对象。集合基本上是定义良好的对象的集合,这些对象可能...

  • 发布于 2021-06-25 07:52
  • 阅读 ( 480 )

俄罗斯(russia)和苏联(soviet union)的区别

...间存在于欧亚大陆,其正式名称是苏维埃社会主义共和国联盟。它是一个由多个国家以下苏维埃共和国组成的联盟,其经济和**高度集中。它是一个由***统治的一党制国家。莫斯科是苏联的首都。 1917年,布尔什维克领导人列宁...

  • 发布于 2021-06-27 12:35
  • 阅读 ( 353 )

结构联合体(structure union)和c中的枚举(enum in c)的区别

...别的比较 关键术语 C、 枚举、结构、并集 什么是结构(structure)? 结构是一个可以保存多种类型数据的单一变量。它是一组不同数据类型的变量。结构示例如下。 Figure 1: Structure in C 根据上述程序,称为复数的结构包含两个性质...

  • 发布于 2021-07-01 06:50
  • 阅读 ( 211 )

状态(state)和联邦领地(union territory)的区别

...区。 覆盖的关键领域 1.什么是国家-定义、管理2。什么是联盟领土-定义、管理3。州和联邦领土之间的区别是什么?主要区别的比较 覆盖的关键领域 Indian Government, State, Union Territory 什么是一个州(a state)? 一个国家是一个在一个*...

  • 发布于 2021-07-02 13:50
  • 阅读 ( 576 )
mzvr753178
mzvr753178

0 篇文章

相关推荐