联合和枚举

简介: 联合和枚举

联合体

联合体类型的声明

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

2. 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间,所以联合体也叫:共⽤体。

3. 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
union UN
{
  char a;
  int b;
};
int main()
{
  union UN u = {0};
  printf("%d\n", sizeof(u));//4
  return 0;
}

联合体的特点

1. 联合的成员是共⽤同⼀块内存空间的。

2. 这样⼀个联合变量的大小,至少是最⼤成员的大小。(因为联合体至少得有能⼒保存最⼤的那个成员)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
union UN
{
  char a;
  int b;
};
int main()
{
  union UN u = {0};
  printf("%p\n", &u);
  printf("%p\n", &(u.a));
  printf("%p\n", &(u.b));//三者地址相同
  return 0;
}

联合体大小的计算

1. 联合的大小⾄少是最⼤成员的大小。

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

#include <stdio.h>
union Un1
{
  char c[5];//5
  int i;//4
    //8
};
union Un2
{
  short c[7];//14
  int i;//4
    //16
};
int main()
{
  //下⾯输出的结果是什么?
  printf("%d\n", sizeof(union Un1));
  printf("%d\n", sizeof(union Un2));
  return 0;
}

枚举类型

枚举类型的声明

1. 枚举顾名思义就是⼀⼀列举, 把可能的取值⼀⼀列举。

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

3. 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。

enum Day//星期
{
  Mon,
  Tues,
  Wed,
  Thur,
  Fri,
  Sat,
  Sun
};
enum Sex//性别
{
  MALE,
  FEMALE,
  SECRET
};
enum Color//颜⾊
{
  RED,
  GREEN,
  BLUE
};
enum Color//颜⾊
{
 RED=2,
 GREEN=4,
 BLUE=8
};

枚举类型的优点

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


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


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


4. 使⽤⽅便,⼀次可以定义多个常量。


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

枚举类型的使用

enum Color//颜⾊
{
 RED=1,
 GREEN=2,
 BLUE=4
};
enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值

致谢

 感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关文章
|
11月前
|
开发框架 供应链 监控
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
324 3
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行Python自然语言处理和主题建模,包括:1) 安装Gensim;2) 导入`corpora`, `models`, `nltk`等相关模块;3) 对文本数据进行预处理,如分词和去除停用词;4) 创建字典和语料库;5) 使用LDA算法训练模型;6) 查看每个主题的主要关键词。代码示例展示了从数据预处理到主题提取的完整流程。
326 3
|
人工智能 文字识别 监控
将人工智能融入多媒体 助力视频产业加速——阿里云视频AI全能力解读
结合人工智能视频理解流程和用户的需求场景,我们将视频AI的功能分成四个大部分,视频智能审核、视频内容理解、视频智能编辑、视频版权保护。其中视频审核功能包括视频鉴黄、暴恐涉政识别、广告二维码识别、无意义直播识别等,利用识别能力将网络上没营养和不健康的视频内容进行排查和处理;视频理解功能包括视频分类、标签,人物识别、语音识别,同时也包括对视频中的文字进行识别(OCR);视频编辑层面可以实现视频首图、视频摘要、视频highlight的生成,同时支持新闻拆条;关于视频版权,支持视频相似性、同源视频检索和音视频指纹等功能。
17615 0
将人工智能融入多媒体 助力视频产业加速——阿里云视频AI全能力解读
|
5月前
|
缓存 前端开发 JavaScript
《解锁Spline:低代码3D设计的前端开发秘籍》
3D交互体验正成为网页应用的核心亮点,Spline作为一款低代码3D设计工具,为前端开发者提供了高效开发的解决方案。本文深入探讨了Spline的基础操作、资源管理、交互设计、与前端框架集成以及性能优化等关键技巧。通过合理控制模型复杂度、优化材质纹理、实现流畅交互,并结合React或Vue等框架,开发者可打造高性能、跨平台的沉浸式3D应用,提升用户体验。掌握这些技巧,能让Spline的潜力得到充分发挥,推动3D网页应用的创新与发展。
148 12
|
11月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第34天】在数字化时代,网络安全与信息安全的重要性日益凸显。本文将探讨网络安全漏洞、加密技术以及安全意识等关键方面,旨在提升读者对网络安全防护的认识和理解。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调培养良好的安全意识的必要性,本文旨在为读者提供实用的知识和建议,以应对日益复杂的网络威胁。
|
11月前
|
算法
从代码到哲学:编程中的人生启示
【9月更文挑战第35天】在代码的世界中,我们不仅是在编写程序,更是在书写生活。每一行代码都蕴含着逻辑与美,每一个算法都承载着智慧与挑战。本文将通过编程的视角,探讨人生的意义、选择的重要性以及面对困难的态度,带你领略技术背后的深刻哲理。
|
11月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
214 0
|
消息中间件 SQL Kafka
离线数仓(四)【数仓数据同步策略】(1)
离线数仓(四)【数仓数据同步策略】
|
10月前
|
JavaScript 前端开发 数据可视化
哪些 JS 框架支持 SPA 单页面应用
目前主流的JavaScript框架如React、Vue和Angular都支持SPA(单页面应用)开发,能够实现页面无刷新更新,提升用户体验。其他如Ember.js、Backbone.js等也具备SPA开发能力。
|
11月前
|
编译器 C语言 C++
C语言结构体
C语言结构体
90 5