如何计算结构体的大小呢?
常见的类型大小:比如对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4 ,size of(short)=2, sizeof(float)=4;sizeof(double)=8
偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小.
但要注意两个原则:
一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)
二、结构体大小必须是所有成员大小的整数倍。
三, 如果结构体中的成员又是另外一种结构体类型时,只需把其展开即可。但有一点需要注意,展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍.
下面举几个例子来说明:
1.
struct stu1
{
int i;
char c;
int j;
};
sizeof (stu1)=12;
2.
struct stu2
{
int k;
short t;
};
sizeof(stu2)=8;
3.
struct stu3
{
char c1;
int i;
char c2;
}
sizeof(stu3) =12
struct stu4
{
char c1;
char c2;
int i;
}
sizeof(stu4)=8;
struct stu5
{
short i;
struct
{
char c;
int j;
} ss;
int k;
}
sizeof(stu5)=16;