(c语言进阶)联合

一.定义

联合体与结构体极其相似,只不过联合体的所有成员是共用同一块内存的。

 二.联合体大小的计算

联合体共用内存的大小为联合体成员大小的最大值来定 

#include<stdio.h>
union Un
{
	int a;
	char c;
};
int main()
{
	union  Un u;
	printf("%zu",sizeof(u));
	return 0;
}

 

三.联合体的所有成员是共用同一块内存的 

#include<stdio.h>
union Un
{
	int a;
	char c;
};
int main()
{
	union  Un u;
	printf("%p \n", &u);
	printf("%p \n", &(u.a));
	printf("%p ", &(u.c));
	return 0;
}

四.联合体共用内存会发生数据覆盖,所以调用联合体成员只能选择调用其中一个

#include<stdio.h>
union Un
{
	int a;
	char c;
};
int main()
{
	union  Un u;
	u.a = 0x12345678;
	u.c = 0x00;
	return 0;
}

 

 

五.利用联合体判断大小端存储 

#include<stdio.h>
union Un
{
	int a;
	char c;
};
int DXD(union Un u)
{
	return u.c;
}
int main()
{
	union Un u;
	u.a = 0x00000001;
	int g=DXD(u);
	if (g == 1)
	{
		printf("小端存储\n");
	}
	else
	{
		printf("大端存储\n");
	}
	return 0;
}

 六.联合体大小的计算

#include<stdio.h>
union Un
{
	char arr[5];
	int c;
};
int main()
{
	union Un u;
	printf("%zu",sizeof(u));
	return 0;
}

 

 

猜你喜欢

转载自blog.csdn.net/2301_79580018/article/details/134872429
今日推荐