联合体
程序员文章站
2022-07-12 23:07:58
...
char s[9]; int n double d
对于sizeof(u1)=16。由于u1中s占9字节。n占4字节。d占8字节,因此至少须要9字节。其包括的基本数据类型为char。int,double分别占1。4,8字节,为了使u1所占空间的大小能被1,4,8整除。则需填充字节以到16。因此sizeof(u1)=16.
对于sizeof(u2)=8。由于u2中s占5字节。n占4字节,d占8字节,因此至少须要8字节。其包括的基本数据类型为char,int,double分别占1,4,8字节。为了使u2所占空间的大小能被1,4,8整除,不需填充字节,由于8本身就能满足要求。因此sizeof(u2)=8。
#include <stdio.h>
union AA
{
int a;
short b;
char c;
};
int main()
{
union AA a;
/*printf("%d\n",sizeof(a));*/
/*a.a = 1;
printf("%d\n",a.c);*/
/*a.c = 1;
printf("%d\n",a.a);*/
printf("%p\n",&a.a);
printf("%p\n",&a.b);
printf("%p\n",&a.c);
return 0;
}
上一篇: Spring AOP注解开发