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.枚举类型的使用

相关推荐
czy878747512 分钟前
深入了解 C++ 中的 Lambda 表达式(匿名函数)
c++
2302_8138062213 分钟前
【嵌入式修炼:数据结构篇】——树和二叉树
数据结构
苦藤新鸡21 分钟前
56.组合总数
数据结构·算法·leetcode
菜鸟233号32 分钟前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划
Charlie_lll35 分钟前
力扣解题-[3379]转换数组
数据结构·后端·算法·leetcode
CSDN_RTKLIB42 分钟前
include_directories和target_include_directories说明
c++
Trouvaille ~1 小时前
【Linux】UDP Socket编程实战(二):网络字典与回调设计
linux·运维·服务器·网络·c++·udp·操作系统
明洞日记1 小时前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
前端玖耀里2 小时前
Linux C/C++ 中系统调用与库函数调用的区别
linux·c语言·c++
艾莉丝努力练剑2 小时前
【Linux:文件】基础IO:文件操作的系统调用和库函数各个接口汇总及代码演示
linux·运维·服务器·c++·人工智能·centos·io