计算结构体大小

本文详细介绍了计算结构体大小的规则,包括每个成员的偏移量必须是成员大小的倍数,结构体大小必须是最大成员大小的倍数。通过三个例子阐述了结构体中不同类型成员如何影响整体大小,并涉及数组在结构体中的对齐方式,展示了结构体内存对齐的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

偏移量:结构体中的偏移量就是结构体成员和结构体变量的地址之差,比如说第一个结构体成员的偏移量就是0,第二个结构成员的偏移量就是第一个结构体成员的大小,假如第一个成员的是int b;那么第二个结构体成员变量的偏移量就是4

计算结构体大小的规则:
1.每一个成员的偏移量(不包括数组和结构体)都必须是该成员的倍数。
2.结构体的大小必须是该结构体字节数最大成员(不包括结构体和数组)的倍数。 

 结构体的大小是与成员变量的顺序排列有关;

例1:

​
#include<stdio.h>
struct buf
{
  int a;
  char b;
  float c;
};

int main()
{  
    struct buf t;
    printf("a:%d,b:%d,c:%d,t:%d",sizeof(t.a),sizeof(t.b),sizeof(t.c),sizeof(t));
    return 0;
}

​

 

结构体中,a为整型,占4个字节,但排在第一个,所以偏移量为0;第二个元素b为字符型,占1个字节,因为排在第二,所以b的偏移量就是a的大小,为4,因为4是1的整数倍&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值