struct結構體的大小問題:
1.偏移量是結構體中成員所占位元組的整數倍。
2.整個結構體所占大小應該為結構體中最大成員的整數倍,不足就填充位元組。
例子如下:
#include "stdio.h"
#include "stdlib.h"
void main()
{
struct getHowBig{
int a;
double b;
char c;
}struct1;
printf("the struct is %d",sizeof(struct1));
getchar();
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90keOpXTU9UMRRVT3V1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jNycTNzMjM3ETOwYDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
int a 4位元組 double b 8位元組 char c 1位元組
a 占用 0 1 2 3 下一個偏移量是4,4不能整除8,是以位元組填充到8,b放入,下一個偏移量是16,能整除1,直接放入c,一共占用17位元組,但是17不能整除結構體中最大的成員 也就是double 位元組為8 ,是以填充位元組到24.