欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

联合体

程序员文章站 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;
}