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

相关推荐
cfm_29145 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
如竟没有火炬5 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
Qt程序员6 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
qeen877 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
王老师青少年编程7 小时前
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践3)
c++·记忆化搜索·方格取数·csp·信奥赛·csp-s·提高组
Titan20248 小时前
Linux动静态库
linux·服务器·c++
j_xxx404_9 小时前
MySQL表操作硬核解析:从 CREATE TABLE 到磁盘文件、ALTER TABLE 与 DDL 风险
运维·服务器·数据库·c++·mysql·adb·ai
wuminyu9 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
玖玥拾10 小时前
C/C++ 基础笔记(十一)类的进阶
c语言·c++·设计模式·
-森屿安年-10 小时前
1137. 第 N 个泰波那契数
c++·动态规划