struct {
short a;
char b;
float c;
}cs;
sizeof(cs)=8
首先一个第一个变量在0偏移处。短整型占两个字节,现在就到了2偏移处,一个char占一个字节,2是1的倍数,直接加在后面,现在是3偏移处,而float是4个字节,4不是3的倍数,需要再开辟一个字节,到4偏移处,然后加上4,所以结构体大小为8个字节,最后还要考虑,结构体总大小是不是所有变量的中最大对齐数的倍数,这个就是,就不用加了。如果不是的话,需要加到它的倍数。
union联合体其大小取决于所有成员中,占用空间最大的一个成员的大小。例:
union{
short a[10];
char b;
float c;
}cs;
sizeof(cs)=20
int=long=指针=4
char=1 short=2
double=8