0
点赞
收藏
分享

微信扫一扫

C语言如何计算无嵌套结构体的大小?

 

/*

如何计算无嵌套结构体的大小?

由于存储变量地址对齐的问题,计算结构体大小的3条规则:

1、结构体变量的首地址,必须是结构体变量中的“最大基本数据类型成员所占字节数”的整数倍。(对齐)

2、结构体变量中的每个成员相对于结构体首地址的偏移量,都是该成员基本数据类型所占字节的整数倍。(对齐)

3、结构体变量的总大小,为结构体变量中“最大基本数据类型成员所占字节数”的整数倍(补齐)

*/

//结构体内存对齐


struct S1

{

   char c1;

   int a;

   char c2;

};

struct S2

{

   char c1;

   char c2;//调整顺序

   int a;

};

int main()

{

   struct S1 s1 = {0};

   printf("%d\n",sizeof(s1)); //12

   struct S2 s2 = {0};

   printf("%d\n",sizeof(s2)); //8

   return 0;

}

举报

相关推荐

0 条评论