结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。请看下面各结构体的大小分析:
struct A
{
char a;//1+3
int b;//4
};//8
上例中,char的字节大小为1,int的字节大小4,为了做到地址能够整除字节数,需要在char后面加上3个字节,所以结构体大小为8。
struct B
{
char a; //1+1
short b; //2
int c; //4
};//
strcut C
{
char a; //1+3
int b; //4
short c; //2
} //10+2=12
struct HH
{
int a;
float b;
}
struct H
{
char c;
struct HH d;
}