黑马程序员技术交流社区
标题:
求结构体字节数
[打印本页]
作者:
stud
时间:
2016-5-12 12:53
标题:
求结构体字节数
结构体字节数怎么求?
作者:
烛风小糊涂
时间:
2016-5-12 23:05
用sizeof呀~
作者:
烛风小糊涂
时间:
2016-5-12 23:11
用sizeof呀~
作者:
stud
时间:
2016-5-13 12:25
烛风小糊涂 发表于 2016-5-12 23:11
用sizeof呀~
如果是笔试不是机试呢?
作者:
烛风小糊涂
时间:
2016-5-13 15:31
本帖最后由 烛风小糊涂 于 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个字节空间。
作者:
stud
时间:
2016-5-14 23:05
谢谢,我们这期的课程没讲,给剪掉了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2