自定义类型之枚举类型(enum)和联合体类型(union)

这篇具有很好参考价值的文章主要介绍了自定义类型之枚举类型(enum)和联合体类型(union)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

 

枚举类型(enum)

什么是枚举类型?

枚举类型的使用

枚举类型的优势

枚举类型的应用场景

总结

联合体类型(union)

什么是联合体?

联合体的应用场景

联合体的注意事项

总结


枚举类型(enum)

枚举类型是C语言中一种非常有用的数据类型,它允许程序员定义一组命名的常量。枚举类型为代码增加了可读性和可维护性,使得程序更易于理解和调试。本文将介绍枚举类型的基本概念、用法和一些实际应用场景。

什么是枚举类型?

枚举类型是一种用户定义的数据类型,它允许程序员定义一组具有命名值的常量。枚举类型通过列出所有可能的取值来定义一组相关的常量。在C语言中,枚举类型使用 enum 关键字来定义。

枚举类型的使用

定义了枚举类型后,我们可以使用枚举类型来声明变量,并将枚举常量赋值给这些变量。

例如:

#include <stdio.h>

// 定义枚举类型
enum Weekday {
    Monday=1,//枚举类的成员如果没有赋值默认从0开始
    Tuesday,//每个成员递增1
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

int main() {
    // 声明枚举类型变量并赋值
    enum Weekday today1 = Monday;
    enum Weekday today2 = Tuesday;
    enum Weekday today3 = Wednesday;
    enum Weekday today4 = Thursday;
    enum Weekday today5 = Friday;
    enum Weekday today6 = Saturday;
    enum Weekday today7 = Sunday;


    // 使用枚举类型变量
    printf("Today is %d\n", today1);// 输出:1
    printf("Today is %d\n", today2);// 输出:2
    printf("Today is %d\n", today3);// 输出:3
    printf("Today is %d\n", today4);// 输出:4
    printf("Today is %d\n", today5);// 输出:5
    printf("Today is %d\n", today6);// 输出:6
    printf("Today is %d\n", today7);// 输出:7

    //也可以不用创建枚举变量直接使用
    int a = Monday;
    printf("Today is %d\n", a);//1
    return 0;
}

枚举类型的优势

  1. 增加可读性和可维护性: 使用枚举类型可以将常量的含义直观地展现在代码中,使得代码更易读、易懂,就可以用这些名字去象征常量。
  2. 提高程序的健壮性: 枚举类型可以减少在代码中出现的硬编码错误,因为它可以帮助程序员避免直接使用数字或字符串来表示常量。
  3. 与#define定义的常量相比更好调试:#define声明的关键字一般都在预编译阶段,而调试是在之后打包成.exe调试的,所以对于编译器就看不到常量名所象征的意义
  4. 一次可声明多个常量

枚举类型的应用场景

  1. 表示状态或选项: 例如表示星期几、月份、选项等。
  2. 错误码: 例如表示函数返回的错误码。
  3. 状态机: 枚举类型可以方便地表示状态机的状态。

总结

枚举类型是C语言中一种简单但功能强大的数据类型,它为程序员提供了一种有效的方式来组织和管理常量。通过使用枚举类型,程序员可以编写更具表现力和可读性的代码,从而提高代码的质量和可维护性。因此,在编写C语言程序时,枚举类型是一种非常有用的类型,值得程序员们加以充分利用。

联合体类型(union)

联合体(Union)是C语言中一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。联合体的特点在于所有成员共享同一块内存空间,与位段不同位段中的变量可能共用1个字节,但是其中的值完全独立的,因此联合体的大小取决于其最大成员的大小。    

什么是联合体?

联合体是一种用户定义的数据类型,它允许在同一内存位置存储不同类型的数据。与结构体不同的是,联合体中的每个成员共享同一块内存空间,这意味着在任意时刻只能存储一个成员的值。因此,联合体的大小由其最大成员的大小决定。

#include <stdio.h>

// 定义联合体
union MyUnion {
    int intValue;
    double doubleValue;
    char stringValue[20];
};

int main() {
    // 声明联合体变量并赋值
    union MyUnion myUnion;
    myUnion.intValue = 10;

    // 访问联合体的成员并用中文进行打印
    printf("整型值: %d\n", myUnion.intValue);
    printf("双精度浮点数值: %f\n", myUnion.doubleValue); // 未定义行为,潜在的问题
    printf("字符串值: %s\n", myUnion.stringValue); // 未定义行为,潜在的问题

    return 0;
}

联合体的应用场景

  1. 节省内存空间: 联合体允许在同一内存位置存储不同类型的数据,从而节省内存空间。
  2. 实现联合体类型的变量: 联合体可以用于实现一种变体类型的变量,即在不同时间存储不同类型的数据。
  3. 处理联合体类型的数据: 联合体可以用于处理一些特殊的数据结构,例如网络数据包、硬件寄存器等。

联合体的注意事项

  1. 联合体中的各个成员共享同一块内存空间,因此在任意时刻只能存储一个成员的值。
  2. 访问联合体的成员需要谨慎,因为在某些情况下可能会产生未定义行为。
  3. 联合体的成员可以是任意类型,包括基本数据类型、数组、结构体等。

总结

联合体是C语言中一种灵活而强大的数据类型,它提供了一种有效的方式来在同一内存位置存储不同类型的数据。虽然在使用联合体时需要注意一些潜在的问题,但在某些情况下,联合体可以成为解决特定问题的理想选择。文章来源地址https://www.toymoban.com/news/detail-830059.html

到了这里,关于自定义类型之枚举类型(enum)和联合体类型(union)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体

    目录  前言 1、结构体 1.1、结构体类型的声明 1.2、特殊的结构体类型声明 1.3、结构体的自引用 1.4、结构体的定义和初始化 1.5、结构体成员变量的调用 1.6、结构体内存对齐  1.6.1、offsetof 1.6.2、结构体大小的计算 1.6.3、为什么存在内存对齐?  1.7、 修改默认对齐数 1.8、结构

    2024年02月08日
    浏览(41)
  • 自定义类型——枚举与联合体

    枚举顾名思义就是一一列举 把可能的取值一一列举 以上定义的 enum Day , enum Sex 都是枚举类型  { }中的内容是枚举类型的可能取值,也叫 枚举常量 这些可能取值都是有值的,默认从0开始,一次递增1 当然在定义的时候也可以赋初值 例如: 我们可以使用 #define 定义常量,为

    2023年04月19日
    浏览(37)
  • 自定义类型:结构体、枚举、联合体

    结构体是一种自定义的数据类型,它由多个不同类型的成员变量组成,结构体可以将多个相关的数据打包在一起,方便进行管理和处理。 定义形式: struct 结构体名{ 类型 成员名1; 类型 成员名2; //更多的成员变量 }; 如描述一个学生: struct Stu这样就和int类型一样,都是数

    2024年02月16日
    浏览(41)
  • 详解自定义类型:枚举与联合体!

    目录  ​编辑 一、枚举类型 1.枚举类型的声明 2.枚举类型的优点 3.枚举类型的使用 二、联合体类型(共用体) 1.联合体类型的声明 2.联合体的特点 3.相同成员的结构体和联合体的对比 4.联合体大小的计算 5.用联合体判断大小端   三.完结散花                            

    2024年02月19日
    浏览(31)
  • C/C++之自定义类型(结构体,位段,联合体,枚举)详解

    专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 个人主页:点我进入主页   1.前言 2.结构体 2.1结构体声明 2.2结构体初始化 2.3结构体的自引用 2,4结构体的内存

    2024年02月08日
    浏览(39)
  • 深入理解C语言中的联合体(union)

    在C语言中,联合体(union)是一种特殊的数据类型,它可以让你在相同的内存位置存储不同的数据类型。通过联合体,你可以在同一时间访问不同的变量,这在某些情况下非常有用。下面我们将深入探讨联合体的特性和用法,以及一些常见的使用场景。 联合体是一种特殊的数

    2024年02月20日
    浏览(46)
  • 【C语言】联合体和枚举

    前言 这篇博客就把剩下的两个自定义类型联合体和枚举好好总结一下,让我们好好看看联合体和枚举到底是什么 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录  1. 联合体 1.1 联合体类型的声明  1.2 联合体的特点  1.3 相同成员的结构体和联合体对比  

    2024年04月14日
    浏览(40)
  • c语言-联合体和枚举

    (1) 像结构体⼀样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 (2)但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 (3) 给联合体其中⼀个成员赋值,其他成员的值也跟着

    2024年02月04日
    浏览(44)
  • c语言-枚举和联合体

    本篇文章介绍c语言中的枚举类型和联合体类型 枚举类型和结构体类型相似,都是一种自定义类型。 定义枚举类型的: enum 枚举类型的定义格式 例如,定义一个星期作为枚举类型 枚举类型的第一个成员的取值默认为0,依次往后递增1, 输出枚举WEEK每个成员的值 修改枚

    2024年01月21日
    浏览(68)
  • C语言枚举与联合体详解

        本篇文章带来 枚举与联合体 相关知识详细讲解! 如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力之源,让我们一起加油,一起奔跑,让我们顶峰相见!!! 目录 一.枚举 1.什么是枚举? 2.枚举类型的定义 3.枚举的优点 4.枚举的使用 二.联合体(共

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包