结构体和联合体的存储

今天我们来看看结构体和联合体的存储,新的一天,卯足精神,冲冲冲!!!

目录

结构体的存储

偏移量,对齐数,默认对齐数

方法一:将相同类型的成员都放在一起

方法二:使用位段

位段的跨平台问题

位段使用的注意事项

联合体的存储

总结


结构体的存储

我们已经了解了整型类型,浮点数,字符数的存储,我们来了解一下结构体的存储,要知道结构体的存储和它们的存储方式截然不同,而结构体是什么呢?简单来说是一个能一下定义多个数据类型的结构,简单来说,当我们想一下定义多个变量时,结构体就当仁不让了,比如我们要记录一个学生的基本信息(学号,姓名,性别,成绩等等),我们就能使用它,我们一起来看看:

而另一个问题出来了,我们知道整型类型为4个字节,这里的字符数组占10个字节,这里的整型数组为12个字节,那就有很多同学就认定有16个字节(4+10+12),那它这个结构体是不是就时有16个字节呢?我们看看:

很显然,并不是16个字节,而是28个字节,那它到底是怎么存储的呢?首先我们要引入偏移量,对齐数,默认对齐数的概念。

偏移量,对齐数,默认对齐数

我们先来来了解对齐数,默认对齐数的概念。默认对齐数根据编译器不同,默认对齐数也就不同(根据编译器不同而不同),(Linux中gcc没有默认对齐数,对齐数就是成员本身大小)以vs2022为例,默认对齐数是8个字节,从上到下它们各自的字节大小分别为4,1,4,而它们各自字节大小和默认对齐数相比,哪个小,就取哪个作为它们各自的

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值