c学习-26-结构体成员变量的存储方式

1. 代码

/* c++结构占用内存的大小 */
struct A{// 共24字节
  int a;//4字节
  double b;//8字节
  int c;//4字节
}A1;

struct B{//共16字节
  int a;//4字节
  int b;//4字节
  double c;//8字节
}B1;

struct C{//共16字节
  char a;//1字节
  int b;//4字节
  double c;//8字节
}C1;

struct D{//共24字节
  int b;//4字节
  double c;//8字节
  char a;//1字节
}D1;

struct E{//共8字节
  int b;//4字节
  short c;//2字节
  char a;//1字节
}E1;

struct F{//共12字节
  short c;//2字节
  int b;//4字节
  char a;//1字节
}F1;

struct G{//共24字节
  short c;//2字节
  double d;//8字节
  int b;//4字节
  char a;//1字节
}G1;

struct H{//共16字节
  int b;//4字节 
  char a;//1字节
  short c;//2字节
  double d;//8字节
}H1;

struct J{//共4字节
  char a;//1字节
  short b;//2字节
}J1;

struct K{//共1字节
  char a;//1字节
}K1;

struct L{//共6字节
  short a;//2字节
  short b;//2字节
  short c;//2字节
}L1;

struct M{//共6字节
  char a;//1字节
  short b;//2字节
  short c;//2字节
}M1;

struct N{//共3字节
  char a;//1字节
  char b;//1字节
  char c;//1字节
}N1;

void test_15_01(){
  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));
  printf("sizeof(E)=%d\n",sizeof(E));
  printf("sizeof(F)=%d\n",sizeof(F));
  printf("sizeof(G)=%d\n",sizeof(G));
  printf("sizeof(H)=%d\n",sizeof(H));
  printf("sizeof(J)=%d\n",sizeof(J));
  printf("sizeof(K)=%d\n",sizeof(K));
  printf("sizeof(L)=%d\n",sizeof(L));
  printf("sizeof(M)=%d\n",sizeof(M));
  printf("sizeof(N)=%d\n",sizeof(N));
}

2. 执行结果

3. 分析(规则)(这些例子成员都是基本类型,成员里面没有类、结构体类型、数组)

a. 按照声明顺序存储。

b.按照成员中存在的最大的那个值对齐。(有可能是1、2、4、8...)

b.依据上面两原则,接下来应该是再根据“最优算法”,给成员变量分配内存。

参考:c学习18

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值