最近作了一些笔试题,发现有一些是求一个结构的大小。做一下总结
typedef struct tBit
{
short m;
char a;
char n;
}A;
typedef struct tBit
{
char a;
short m;
char n;
}B;
typedef struct tBit
{
char n;
char a;
short m;
}C;
sizeof(A)=4 sizeof(B)=6 sizeof(C)=4,short 相对应结构的偏移量是2的倍数
typedef struct tBit
{
int b;
short m;
char a;
char n;
}D;
typedef struct tBit
{
short m;
int b;
char a;
}E;
typedef struct tBit
{
short m;
char a;
int b;
}F;
sizeof(D)=8 sizeof(E)=12 sizeof(F)=8,int 相对于结构的偏移量为4的倍数
typedef struct tBit
{
double m;
int b;
}G;
sizeof(G)=16,double县对于结构的偏移量为8的倍数
可以看出,结构中一个基本类型A在分配空间时应该在相对于结构的偏移量为sizeof(A)的倍数,
并且,结构的大小总是类型中需要空间最大元素的倍数。