C语言struct和union有什么区别
时间: 2023-10-31 18:20:52 浏览: 131
C语言中struct和union有啥区别
在C语言中,struct和union都是用来定义自定义的数据类型的,但它们有一些区别。
1. 定义方式:
- struct:使用关键字`struct`,后面跟上结构体的名称,并且在大括号内定义成员变量。
- union:使用关键字`union`,后面跟上联合体的名称,并且在大括号内定义成员变量。
2. 内存分配:
- struct:结构体的成员变量在内存中是按照定义的顺序依次存放的,每个成员变量都占据自己独立的内存空间。
- union:联合体的所有成员变量共享同一块内存空间,它们在不同的时间点只能有一个成员被赋值,共享同一块内存可以节省内存空间。
3. 大小计算:
- struct:结构体的大小等于所有成员变量的大小之和,可能会因为内存对齐而增加额外的空间。
- union:联合体的大小等于最大成员变量的大小,因为所有成员共享同一块内存。
4. 访问方式:
- struct:可以通过结构体变量的成员操作符`.`来访问结构体的成员变量。
- union:只能通过联合体变量的方式来访问联合体的成员变量。
总结:struct适用于需要存储多个不同类型的数据,而union适用于需要在不同类型数据之间共享内存空间的情况。
阅读全文