C语言中共用体和枚举的实现
更新时间:2025年12月18日 10:27:13 作者:VekiSon
本文主要介绍了C语言中共用体和枚举的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、共用体(联合体)
1.共用体的定义与声明
- 共用体的定义
union 类型名
{
数据类型 成员变量1;
数据类型 成员变量2;
数据类型 成员变量3;
数据类型 成员变量4;
...
}- 共用体的声明
和结构体一样,共用体变量声明有 3 种常见形式:
// 方式1:定义后单独声明
union Data
{
int i;
char c;
float f;
};
union Data a, b;
// 方式2:定义时声明变量
union Data2
{
int x;
double y;
} c, d;
// 方式3:匿名共用体(仅使用一次,无名称)
union
{
char ch;
short s;
} e;2.共用体的特征
- 共用体每个成员变量的内存空间都是共享的
- 共用体也会用于函数参数的传递
- 共用体的大小,是最大成员变量的大小
3.共用体的应用
1.大小端判断
#include <stdio.h>
union DATA
{
int a;
char c;
};
int main()
{
union DATA data;
data.a = 0x12345678;
if(0x78 == data.c)
{
printf("little end\n");
}
else
{
printf("big end\n");
}
return 0;
}2.作为函数的参数传递的时候的不同选项(EPOLL)
4.共用体与结构体的区别
| 特性 | 共用体(Union) | 结构体(Struct) |
|---|---|---|
| 内存分配 | 所有成员共享同一块内存 | 成员各自占用独立内存,总大小 = 各成员大小之和(含对齐) |
| 成员访问 | 同一时间只能有效访问一个成员 | 可同时访问所有成员 |
| 大小计算 | 总大小 = 最大成员的大小(含对齐) | 总大小 = 各成员大小之和(含对齐) |
| 用途 | 节省内存、类型转换 | 组合不同类型数据,描述复杂对象 |
二、枚举
1.枚举的定义与声明
枚举:约定变量的取值范围。比如月份、周几。
//枚举值当常量值看,类型为整形(int)
enum 类型名 {枚举值1,枚举值2, 枚举值3,枚举值4 ,枚举值5, 枚举值6, ... };
//MON如果没有指定值,那么它的值就是0,后面枚举值就在一个的值的基础上+1
enum WEEK {MON, TUE, WED, THU, FRI, SAT, SUN};
//当然也可一给每个枚举值赋新值进去
enum WEEK {MON,TUE=3,WED=4,THU=5,FRI=6,SAT,SUN};关键规则:
- 枚举常量的值必须是整数(不能是浮点数、字符串)。
- 允许不同枚举常量赋值相同(但不推荐,失去唯一性)。
- 未显式赋值的成员,值为 “前一个成员的值 + 1”。
2.枚举的应用
- 和 switch 搭配使用
- 提高代码的可阅读性
代码示例:
#include <stdio.h>
enum WEEK {MON, TUE, WED, THU, FRI, SAT, SUN};
typedef enum
{
JAN,
FEB,
MARCH,
APRI,
MAY,
JU,
JULY,
}MONTH;
int main()
{
enum WEEK week;
MONTH mon = MAY;
int num = 0;
printf("input num (0~6):");
scanf("%d", &num);
week = num;
switch(week)
{
case MON:
printf("go to school\n");
break;
case TUE:
printf("go to swim\n");
break;
case WED:
printf("go to read\n");
break;
case THU:
printf("go to study\n");
break;
case FRI:
printf("go to pao dao\n");
break;
case SAT:
printf("go to da wa\n");
break;
case SUN:
printf("go to sleep\n");
break;
default:
printf("I don't know\n");
}
}到此这篇关于C语言中共用体和枚举的实现的文章就介绍到这了,更多相关C语言 共用体和枚举内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
使用 Visual Studio 2022 开发 Linux C++ 应用程序的过程详解
Visual Studio 2022 引入了用于 Linux C++ 开发的本机 WSL2 工具集,可以构建和调试 Linux C++ 代码,并提供了非常好的 Linux 文件系统性能、GUI 支持和完整的系统调用兼容性,这篇文章主要介绍了使用Visual Studio 2022 开发 Linux C++ 应用程序,需要的朋友可以参考下2021-11-11


最新评论