鱼C论坛

 找回密码
 立即注册
查看: 1766|回复: 11

结构体占大小

[复制链接]
发表于 2015-9-22 17:19:28 | 显示全部楼层
8  一个long 占4个字节,char占1个字节。因为是按8个字节来算,所以对齐后事8
7 因为里面的结构体占8个字节 Long long 类型也占8个字节,而且没有规定是按照什么对齐,所以这里char型需要用7个字节来填补自己满足8字节
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-22 17:56:41 | 显示全部楼层
ianv 发表于 2015-9-22 17:30
按照最大的那个对齐吧?

是啊,不过是在没有在程序中指明按多少字节对齐的情况下。然后因为这里楼主的代码中有一个#program pack(8) 所以这里以8个字节对齐
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-23 09:47:25 | 显示全部楼层

谢谢,我懂了。
第二个问题我理解错了。
第二个问题里面  char的下一个类型是char ,char型接下来是int型,所以他们先是按照int型的来对齐,int型占4个字节。 对齐后就成了1*** 1*** 1111 然后因为接下来是long long 型,long long 型所占字节为8个字节,所以前面的需要以8字节来对齐   所以就变成(1*** 1***)(1111 1111) (1111 1111)


开始我并不知道的一个点是是先根据与自己临近的最大的来对齐。长知识了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2015-9-23 11:09:42 | 显示全部楼层
wwwheihei 发表于 2015-9-23 10:31
你的理解是不对的,我现在理解了,如果不申明按多少字节对齐,他们是按照自身的类型大小来对齐的,也就 ...

8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-4 19:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表