15.自定义类型:联合和枚举

一.联合体

cpp 复制代码
union u
{
	char c;
	int u;
};

int main()
{
	union u uu;
	printf("%zd\n", sizeof(uu));
	printf("%p\n", &uu);
	printf("%p\n", &(uu.c));
	printf("%p\n", &(uu.u));

	return 0;
}

相同成员的结构体和联合体对比

联合体大小的计算

cpp 复制代码
union Un1
{
   char c[5];//5
   //1 8 1
   int i;//4 8 4
};

union Un2
{
   short c[7];//14
   int i;//4
};

int main()
{
   printf("%zd\n", sizeof(union Un1));//8
   printf("%zd\n", sizeof(union Un2));//16

   return 0;
}

对于不同的商品,我们只使用一种类型,所以这样就能节省一定的空间

cpp 复制代码
union U
{
	int n;//4
	struct S
	{
		char c1;
		char c2;
		char c3;
		char c4;
	}s;//4
};

int main()
{

	union U u = { 0 };
	u.n = 0x11223344;
	printf("%x %x %x %x\n", u.s.c1, u.s.c2, u.s.c3, u.s.c4);

	return 0;
}

写一个程序,判断当前机器是大端?还是小端?

cpp 复制代码
int check_sys()
{
	int n = 1;//01 00 00 00     00 00 00 01
	return *(char*)&n;
}

int check_sys()
{
	union
	{
		char c;
		int i;
	}u;
	u.i = 1;
	return u.c;
}

int main()
{
	int ret = check_sys();
	if (ret == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

二.枚举类型

cpp 复制代码
enum Day//星期
{
 Mon,
 Tues,
 Wed,
 Thur,
 Fri,
 Sat,
 Sun
};
cpp 复制代码
enum Color//颜⾊
{
 RED,
 GREEN,
 BLUE
};
cpp 复制代码
//枚举的关键字
enum Sex
{
	//这里列举枚举enum Sex的可能取值
	//这些可能取值是常量,也叫枚举常量
	MALE=5,
	FEMALE=8,
	SECRET=10
};

//#define MALE 5
#define MAX 10


int main()
{

	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);

	enum Sex s = MALE;
	s = FEMALE;

	return 0;
}

1.枚举类型的优点

2.枚举类型的使用

相关推荐
wabs6663 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
wuyk5554 小时前
2.队列:先进先出的线性数据结构
c语言·数据结构·stm32·单片机
会周易的程序员4 小时前
aiDgePLC — IEC61131-3 ST PLC 虚拟机调试与运行环境
c++·物联网·虚拟机·st·工业协议·iec61131·梯形图
lsylalalala5 小时前
常见的排序算法1
数据结构·算法·排序算法
wuminyu5 小时前
JVM利用io_uring优化堆外内存性能原理剖析
java·linux·c语言·jvm·c++
gumichef5 小时前
第二章:C/C++内存管理
c++·内存管理
imaol16 小时前
数据结构---队列
java·数据结构·算法
疯狂打码的少年6 小时前
【数据结构】串的模式匹配:KMP算法(重点)
数据结构·笔记·算法
一米阳光86616 小时前
软考(中级)软件设计师核心笔记(8)数据结构——线性结构、数组、矩阵
数据结构·笔记·职场发展·软考·软件设计师·中级职称
疯狂打码的少年7 小时前
【数据结构】树的基本概念与二叉树定义
java·数据结构·笔记·算法