自定义类型:联合和枚举

本文详细介绍了C语言中联合体和枚举类型的声明、特点、大小计算以及应用示例,突出了它们在代码可读性、类型检查和调试方面的优点。
摘要由CSDN通过智能技术生成

目录

1. 联合体

1.1 联合体类型的声明及特点

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

1.3 联合体大小的计算

1.4 联合体的应用举例 

2. 枚举类型

2.1 枚举类型的声明

2.2 枚举类型的优点


1. 联合体

1.1 联合体类型的声明及特点

像结构体一样,联合体也是由一个或多个成员构成的,这些成员可以是不同类型的。

//结构体
struct S
{
    char a;
    int b;
};

//联合体
union S
{
    char a;
    int b;
};

但是编译器只为最大的成员分配足够的空间。联合体的特点就是所有的成员共用同一块内存空间。所以联合体也叫:共用体

个联合体的其中一个成员赋值,其他的成员的值也跟着变化。

画出un的内存布局图:

 

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

#include <stdio.h>
//结构体
struct S
{
	char c;
	int i;
};

struct S s = { 0 };


//联合体
union Un
{
	char c;
	int i;
};

union Un un = { 0 };

 

1.3 联合体大小的计算

联合体的大小至少是最大成员的大小。

当最大成员不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。

1.4 联合体的应用举例 

#include <stdio.h>

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;
}

2. 枚举类型

2.1 枚举类型的声明

枚举就是把可能的取值一一列举。

例如:月份有12个月,可以一一列举。

#include <stdio.h>

enum Sex
{
	MALE,
	FEMALE,
	SECRET
};

enum Color
{
	RED,
	GREEN,
	BLUE
};

如上定义的 enum Sex,enum Color 都是枚举类型

{}中的内容是枚举类型的可能取值,也叫枚举常量

这些可能取值都是有值的,默认从0开始,依次递增1

在声明枚举类型的时候也可以赋初值。

2.2 枚举类型的优点

枚举的优点:

1. 增加代码的可读性和可维护性;

2. 和 #define 定义的标识符比较,枚举有类型检查,更加严谨;

3. 便于调试,预处理阶段会删除 #define 定义的符号;

4. 使用方便,一次可以定义多个常量;

5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMLT花岗岩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值