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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© stud 中级黑马   /  2016-5-12 12:53  /  1300 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

结构体字节数怎么求?

6 个回复

倒序浏览
用sizeof呀~
回复 使用道具 举报
用sizeof呀~

点评

如果是笔试不是机试呢?  发表于 2016-5-13 12:21
回复 使用道具 举报
stud 来自手机 中级黑马 2016-5-13 12:25:37
板凳
烛风小糊涂 发表于 2016-5-12 23:11
用sizeof呀~

如果是笔试不是机试呢?
回复 使用道具 举报
本帖最后由 烛风小糊涂 于 2016-5-13 15:34 编辑
stud 发表于 2016-5-13 12:25
如果是笔试不是机试呢?

这个问题基础班视频都讲的很详细的,但还是说下吧~
计算结构体所占字节数需要用到对齐模数,即结构体内基本数据类型中占用字节数最大的那个。比如一个结构体有三个成员变量,依次是 char name[10]; int age; char sex。那么对齐模数就是int类型所占的字节:4,系统会依次开辟一块块以4字节为最小单位的内存空间。

计算:
首先,char name[10]总共占10个字节,所以系统为了存储这10个字节会开辟3个4,即12字节空间,多出的2字节先放那;
然后是int age,刚才剩下的2字节并不足以存下age这个整型变量,所以系统又开1个4,即4字节去存储age这个int类型变量。
最后 char sex,由于刚才开辟的16字节空间被占得满满的(中间的2个空的字节空间不算),所以系统得又开辟4个字节空间去存储sex这个char类型变量;

所以,如果你sizeof一下,这个结构体占12+4+4,即20个字节的空间。

注意:结构体中成员变量的声明顺序会影响到总的字节数。比如刚才那三个,不按照一开始我写的那个顺序,而是按照  int age; char sex;char name[10]; 这个顺序去声明,则结果为占16个字节空间。

回复 使用道具 举报
谢谢,我们这期的课程没讲,给剪掉了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马