C | 计算结构体的大小

内存对齐

例:

1.牺牲一点空间,带来更高的效率

                                                                     101,102,103空掉不用

(1)struct A
  {
    int a; //4
    float b; //4
  };//8

(2)struct C
  {
    char a;//1+1
    short b;//2
    int c;//4
  };//8

2.单个最大类型能被总字节数整除(单个最大类型为所有成员中最大的单个类型)

(1)struct D
  {
    char a;//1+3
    int b;//4
    short c;//2
  };//10+2  //该结构体中单个最大类型为4,总字节数10不能整除4,所以实际的总字节数要在10的基础上加2,即12

(2)struct E
  {
    char a;//1+3
    float b;//4
    int c;//4+4    //4不能整除下面的8,所以要再加4
    double d;//8
  };//24

(3)struct F
  {
    int a;//4
    char b;//1+3
  };//8

(4)struct H
  {
    char a;//1+3
    int b;//4
    double c;//8
    int *d;//4
  };//20+4

4.struct II
  {
    int a;
    char b;
  }; //8

struct I
{
    float x;//4
    struct II y;//8  结构体II的单个最大类型为(int) 4
};//12 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值