结构体大小
结构体大小:结构体大小的问题主要是由内存对齐引起的
结构体成员存放的地址要能整除该成员本身的大小
规则1. 前面所有成员的大小相加应该是当前成员大struct小的倍数
规则2. 整个结构体的大小应该是该结构体中单个最大成员大小的倍数
例子如下:
(1)
struct A
{
char a;//1+3
int b;//4
}; //sizeof(struct A)==1+3+4==8;
//char为1个字节 int为4个字节 根据规则1 char的大小应该是int的倍数 所以给char+3;
(2)
struct B
{
char a; //1+1
short b;//2
int c;//4
};//根据规则1 sizeof(struct B)==1+1+2+4==8
(3)
struct C
{
char a;//1+1
short b;//2+4
double c;//8
};//根据规则 1 sizeof(struct C)==1+1+2+4+8==16;
(4)
struct D
{
char a;//1+3
float b;//4
int *c;//4
}; //根据规则1 sizeof(struct D)==1+3+4+4==12
(5)
struct E
{
int a;//4
char b;//1+3
};//根据规则 1 2 sizeof(struct E)==4+1+3==8