请问为什么输出前三个是16,为什么不是int+char+int+float=4+1+4+4=13
3条回答 默认 最新
- Pliosauroidea 2021-09-03 14:45关注
struct以其内部最长的成员作为基准值,其size为基准值的整数倍
Student内最长的是4字节的int,一共有4个元素,所以最终的size为16字节,其中char被以4字节对齐,也就是后面填充3字节来达成对齐目的
结构体大小的计算 | 菜鸟教程 用最简单的方法,通俗易懂的方法计算结构体大小。 结构体计算要遵循字节对齐原则。 结构体默认的字节对齐一般满足三个准则: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员.. https://www.runoob.com/w3cnote/struct-size.html
有帮助望采纳本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?