关于结构体大小的计算
先付代码如下
struct str1
{
char a;
double c;
char d;
//int *aa;
};
printf("%d\n",sizeof(str1));
struct str2
{
int c;
char a;
char d;
};
printf("%d\n",sizeof(str2));
union str3
{
char a[10];
int b;
};
printf("%d",sizeof(str3));
运算结果如下
预备知识:
结构体规定,字节数应按照最大的成员变量的整数倍存储,即地址对齐,且其首地址也应为该字节数的整数倍
首先对于第一个char double char
char一个字节,补充七个字节,(此时总字节8)开始存储double,(此时总的16)之后存储char(此时总的17),但应对齐为8的整数倍,则补充为24.以下同理