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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看了基础加强视频,有一个问题是关于结构体内存分配的有点搞不懂,大神路过给指点一下

4 个回复

倒序浏览
结构体数据遵循模数对齐原则,因此结构体长度为模数的倍数。具体参照下面程序示例:

struct student{

int  num;

char sex;

float score;

}stu1;

该数据结构中int占4字节,char占1字节,float占4字节,数据占得最大字节数为4,故模数为4,按照模数对齐原则,结构体长度为12。

struct student{

short  num;

char sex;

float score;

}stu1;

上面例子中short占2字节,char占1字节,float占4字节,故模数为4,但前面short和char总共才占3个字节,故4个字节空间可以存放两个变量,因此结构体长度为8。
视频上老师都讲过了,需要自己做一下练习题来深入了解,共同学习了。
回复 使用道具 举报
白0702 发表于 2015-6-13 22:36
结构体数据遵循模数对齐原则,因此结构体长度为模数的倍数。具体参照下面程序示例:

struct student{

感谢,知道了

回复 使用道具 举报
好详细,真的要多敲敲才好
回复 使用道具 举报
从上往下加
char
char
char
char-----这里是4
char-----这里是5 对齐算作8
最后结果是8

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马