A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dojimmy 中级黑马   /  2015-11-30 22:17  /  947 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 dojimmy 于 2015-11-30 22:21 编辑

          我们知道结构体的内存老师可能讲得很复杂,有部分同学可能听不明白,这里给大家讲一种比较特殊的方法,能帮大家通熟易懂的理解。
         首先我们都知道我们在初中或者小学学的公倍数,先根据结构体内最大的一个元素,那么公倍数就是最大元素所占的字节数,结构体占的字节数就是公倍数的整数倍。后面的元素占的字节数先分配最大元素字节数,然后小的补齐,不够再分配
例如:struct Person{int *name;int age;char c;};
公倍数为8个字节,先为后面的age分配8个字节,然后age占不了8位,剩下的就是c占有的字节,总占16个字节;
例如:struct Person{int *name;int age;int *detail;};
同理,公倍数8,第二个age占不了8个,但是后面的detail又不够,所以重新分配8个字节给detail,也就是24个字节。
如有错误,请见谅,大家好好学习!

4 个回复

倒序浏览
占个沙发
回复 使用道具 举报
罗文强 来自手机 中级黑马 2015-11-30 23:07:28
藤椅
谢谢楼主分享!
回复 使用道具 举报
这个问题其实很简单。先找出最大的基本类型,以其占用的空间为模,从结构体第一个元素开始存放。存放完一个元素后有空余的空间足够存下下一个元素,那就补上,不足,就另起一个模单位重新寸
回复 使用道具 举报
代战 来自手机 中级黑马 2015-12-1 12:31:52
报纸
赞一个 顶起来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马