关于结构体对齐的问题

#include<stdio.h>
  typedef struct A{
      char c;
      short int a;
      int b;
      double d;
  }A;
  typedef struct B{
      double d;
      A Aa;
      int b;
      short int a;
      char c;
  }B;
  typedef struct C{
      char c;
      short int a;
  }C;
  typedef struct D{
      short int a;
      char c;
  }D;
  
  int main(){
      printf("sizeof(A):%d\n",sizeof(A));
      printf("sizeof(B):%d\n",sizeof(B));
      printf("sizeof(C):%d\n",sizeof(C));
      printf("sizeof(D):%d\n",sizeof(D));
  

输入结果

对于结构体里面嵌套结构体,把嵌套的结构体按照里面的类型展开,然后再对整体按照对其规则计算

B结构体:

      double d;
      A Aa;
      int b;
      short int a;
      char c;

======>

      double d;    ----->8
      char c;        ------>9
      short int a;  ------>12;
      int b;          -------> 16
      double d;   --------> 24
      int b;         ------->28
      short int a;  -----> 30
      char c;    ----->31

最后按照8的倍数对齐 为32;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值