结构体大小计算

在c语言中,要定义一个复杂对象比如说一个学生,用普通的变量是不可能定义完成的,所以这就有了我们的结构体,结构体就是是用来说明一个复杂对象的,所以结构体大小计算也成了重点。那我们应该怎么去计算结构体的大小呢,下面直接超级详细为你解答。
举例一个结构体:struct st
{
char name;
int age;
double money;
}s;
结构体的大小计算有以下几条规则:
1.结构体的第一个成员放在偏移量为0的位置如图:图片说明
2.后面的变量放在对齐数整数倍上(对齐数一般是改成员变量大小如int为4),对齐数是编辑器默认对齐数与成员变量的大小取他们两个的最小值(vs编辑器默认对齐数是8)图片说明
3,结构体最终大小是所有成员最大对齐数的整数倍16是8的整数倍,所以最终大小是16.
注意对于结构体套结构体中也是一样的算,结构体对齐数就是该结构体成员中最大对齐数,总结构体大小为所有成员(包括套的结构体)对齐数的(最小的)整数倍,如结构体所以成员最大对齐数是4,结构体算出来的大小是17,所以最终结果是20。(注意:最终结构体大小>=算出来的结构体大小)如:
struct aa
{ char c;
struct st s;//上面计算过的大小为20
int i;
}d;如图图片说明
计算得到的的大小是32,所有成员最大对齐数是8,32是8的整数倍,故该结构体大小为32.
最后,#pragma pack()可以修改默认对齐数,如#pragma pack(2),修改默认对齐数为2。图片说明
解释:图片说明
以上就是计算结构体的全部内容了,觉得还可以的点个赞,觉得哪里不足的评论区留言。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务