C语言中的 struct 和 union 的区别

举报
糖果罐子 发表于 2023/09/26 20:20:06 2023/09/26
【摘要】 在C语言中,struct和union都是用来定义复合数据类型的关键字,但它们有一些重要的区别。1.成员的存储方式:2.struct:在结构体中,每个成员占据独立的内存空间,结构体的大小等于所有成员的大小之和。每个成员可以独立地访问和修改,互不干扰。3.union:联合(union)中的所有成员共用一块内存空间。联合的大小等于最大成员的大小。每次只能使用一个成员,不同成员之间的修改会影响到共享...

在C语言中,struct和union都是用来定义复合数据类型的关键字,但它们有一些重要的区别。

1.成员的存储方式:


2.struct:在结构体中,每个成员占据独立的内存空间,结构体的大小等于所有成员的大小之和。每个成员可以独立地访问和修改,互不干扰。
3.union:联合(union)中的所有成员共用一块内存空间。联合的大小等于最大成员的大小。每次只能使用一个成员,不同成员之间的修改会影响到共享的内存空间。


4.内存的使用方式:


5.struct:结构体的成员会一起占用内存,保留每个成员的值。结构体的大小是各个成员大小的总和。
6.union:联合的成员共用同一块内存,同一时间只能使用一个成员,并且只有最后一个成员赋值的值是有效的。使用不同的成员会重写共享的内存空间。


7.数据访问方式:


8.struct:结构体的各个成员可以独立地访问和修改,通过成员名和结构体变量使用点运算符(.)进行访问。
9.union:联合的成员共享同一块内存,因此只能通过联合变量来访问成员。通过联合变量使用点运算符(.)访问成员,或者通过union类型的指针来访问。


10.用途:


11.struct:结构体常用于存储多个相关的数据项,用于组织和管理不同类型的数据。例如,可以使用结构体来表示一个人的姓名、年龄和地址等信息。
12.union:联合常用于在不同的数据类型之间进行类型转换或者节省内存空间。例如,可以使用联合来表示一个变量可以是整数、浮点数或字符等多种类型。

总结起来,struct适合用于组织和管理多个相关的数据,每个成员占据独立的内存空间,而union适合在不同的数据类型之间进行转换或节省内存空间,所有成员共享同一块内存空间。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。