规律:1). 每一个成员的地址能够被它本身字节数整除;
2). 最后总的字节数必须能够被最大字节数的成员整除;
3). 一般可以以地址0为起始地址来考虑。
否则的话就会产生补位。
例如:
typedef struct test
{
char a; //2bytes
int b; //1bytes
char d[21]; //20bytes
double f;
};
结果sizeof(test)=4。
实际上,1+(3) + 4 + 21 + (3) + 8 = 40 , 加括号的为对齐填充的。
附:size of int is: 4 size of char is: 1 size of short int is: 2 size of double is: 8 size of unsigned int is: 4 size of float is: 4 size of long double is: 8 size of long int is: 4 size of long int is: 4 size of unsigned char is: 1 size of signed char is: 1 size of unsigned long int is: 4 size of signed int is: 4 size of unsigned short int is: 2 size of signed short int is: 2 size of signed int is: 4 size of signed long int is: 4。
a.成员都相同时(或含数组且数组数据类型同结构体其他成员数据类型)