C语言中结构与结合的区别
C语言中的结构是一种用户定义的数据类型,它允许组合不同类型的数据项。结构用于表示一个记录。
定义结构:要定义结构,必须使用struct语句。struct语句定义了一个新的数据类型,具有一个以上或等于一个成员。struct语句的格式如下:
C语言中的Union是C语言中可用的一种特殊数据类型,它允许在同一内存位置存储不同的数据类型。可以定义具有多个成员的联合,但在任何给定时间,只有一个成员可以包含值。联合提供了一种将同一内存位置用于多种目的的有效方法。
定义联合体
要定义联合,必须以与定义结构相同的方式使用联合语句。联合语句为程序定义了一个具有多个成员的新数据类型。union statement的格式如下:
结构与联合的相似性
- 两者都是用户定义的数据类型,用于将不同类型的数据存储为单个单元。
- 它们的成员可以是任何类型的对象,包括其他结构以及联合或数组。成员也可以由位域组成。
- 结构体和联合体都只支持赋值=和sizeof操作符。赋值中的两个结构或联合必须具有相同的成员和成员类型。
- 结构或联合可以按值传递给函数,也可以按值由函数返回。实参必须具有与函数形参相同的类型。结构或联合是通过值传递的,就像标量变量作为相应的参数一样。
- ”。的操作符或选择操作符,具有最高优先级之一,用于访问用户定义数据类型中的成员变量。
Structure和Union的区别如下表所示,如下表所示:
输出:
注意:结构比联合更好,因为在联合中共享内存,这导致了一点歧义。但从技术上讲,工会更好,因为他们帮助节省了大量的内存,从而在长期的整体优势超过结构。