3、结构体和共用体的区别?

结构体:将不同类型的数据组合成一个整体,是自定义类型
共同体:不同类型的几个变量共同占用一段内存

1)结构体中的每个成员都有自己独立的地址,它们是同时存在的;
共同体中的所有成员占用同一段内存,它们不能同时存在;
2)sizeof(struct)是内存对齐后所有成员长度的总和,sizeof(union)是内存对齐后最长数据成员的长度、

结构体为什么要内存对齐呢?
1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常
2.硬件原因:经过内存对齐之后,CPU的内存访问速度大大提升

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言中,结构体共用体都是用来存储不同数据类型的变量的数据类型。 结构体是一种自定义数据类型,它可以包含多个不同类型的变量,这些变量可以是基本数据类型或其他结构体类型的成员。结构体的定义格式为: ``` struct 结构体名{ 数据类型1 变量名1; 数据类型2 变量名2; ... }; ``` 其中,结构体名是自定义的,可以任意取名;变量名也是自定义的,用来表示结构体中的成员变量。结构体的使用方式是通过定义结构体变量,并给结构体变量的成员变量赋值来使用的。例如: ``` struct student{ int id; char name[20]; int age; }; int main(){ struct student stu; stu.id = 1001; strcpy(stu.name, "Tom"); stu.age = 18; return 0; } ``` 共用体也是一种自定义数据类型,它可以在同一内存空间中存储不同类型的变量,但同一时间只能存储其中的一个成员变量。共用体的定义格式为: ``` union 共用体名{ 数据类型1 变量名1; 数据类型2 变量名2; ... }; ``` 其中,共用体名是自定义的,可以任意取名;变量名也是自定义的,用来表示共用体中的成员变量。共用体的使用方式是通过定义共用体变量,并给共用体变量的成员变量赋值来使用的。例如: ``` union data{ int i; float f; char c; }; int main(){ union data d; d.i = 10; printf("d.i = %d\n", d.i); d.f = 3.14; printf("d.f = %f\n", d.f); d.c = 'A'; printf("d.c = %c\n", d.c); return 0; } ``` 需要注意的是,共用体中不同成员变量的占用空间相同,因此需要谨慎使用共用体,避免出现数据混淆的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值