定义
在结构中,编译器为结构的每个成员按其自身的自然对界条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
结构体成员存放的地址要能整除该成员本身的大小 2.前面所有成员的大小相加应该是当前成员大小的倍数 3.整个结构体的大小应该是该结构体中单个最大成员大小的倍数
struct A
{
char a;//1+3
int b;//4
}//8个字节
struct B
{
char a;//1+1
short b;//2
int c;//4
}//8个字节
struct c
{
int a;//4
char b;//1+1
short c;//2
}//8个字节
struct D
{
char a;//1+3
int b;//4
short c;//2+2
}//12个字节 满足条件3
特殊例子:
struct 1
{
char a;//1
struct 2
{
int b;
long c;
};
};//1个字节,因为该结构体没有定义变量
struct J
{ char a;//1+3
struct
{
int b; //4
long c;//4
};
};//12个字节 定义了一个没有名字的变量
易错题
struct k
{
char a;//1+3
short b[4];//2*4
int c;//4
};//16个字节