struct s1
{
char *ptr,ch;
union A
{
short a,b;
unsigned int c:2, d:1;
};
struct s1* next;
};//这样是12个字节
struct s1
{
char *ptr,ch;
union
{
short a,b;
unsigned int c:2, d:1;
};
struct s1* next;
};//这样是16个字节
需要说明的问题有3点:
1.UNION后面不跟A,是声明了结构体的一个成员,占内存,而后面跟了A定义了一个类型,没有分配内存
2.联合体UNION取其中最大的类型的内存分配大小
3.关于char ch,如果你连着分配4个char,都是那些字节,这个东西好象叫做内存对齐,对于什么时候才内存对齐不太了解,因为sizeof(char)是一个字节