结构体大小计算基本原则
1. 结构体变量的首地址,必须是结构体 "最宽基本类型成员" 大小的整数倍;
2. 结构体每个成员相对于结构体首地址的偏移量,都是该成员的整数倍;
3. 结构体的总大小,为结构体 “最宽基本类型成员”大小的整数倍
简单结构体
// assume that
// char 2byte
// int 4byte
struct st1{
char c1; // 首地址 0 (0设为任意大小的整数倍)
char c2; // 首地址 2 (2符合sizeof(char)整数倍)
int a; // 首地址4 (2符合sizeof(int)整数倍)
};
struct st2 {
char c1; // 首地址 0 (0设为任意大小的整数倍)
int a; // 首地址 4 (2不符合sizeof(int)整数倍,4符合)
char c2; // 首地址8 (8符合sizeof(char)整数倍,4符合)
};
int main() {
struct st1 s1;
struct st2 s2;
cout << sizeof(s1) << endl; // output: 8
cout << sizeof(s2) << endl; // output: 12
getchar();
return 0;
}