首页 > 其他分享 >「C学习」枚举,共用体

「C学习」枚举,共用体

时间:2024-12-04 15:57:03浏览次数:5  
标签:定义 eg 学习 枚举 共用 标识符 赋值

1. 枚举

①用户自定义的数据类型,用于定义一组命名的整型(eg.纯数据)常量。

②限定变量的取值范围

0ea4b5375bd340b6b22eff3c0a6cd5ac.png

→可读性强的宏定义,枚举中定义的可以直接用,不用再次定义

定义枚举变量(eg.X)

①enum X;

②enum Color {

    RED,GREEN,BLUE

} X;

注意:X只能定义为设定好的特殊值(比如说,②中的RED,X=RED),不能直接赋数值。

1.1 枚举的赋值

①不赋值→枚举的第一个标识符会被自动赋值为"0"下面的标识符会不断在上一个标识符的基础上"+1"

②如果其中某个标识符被赋值,它前面的标识符还按照①的规则,后面的从它数值的基础上每个"+1"

3ef81a9c947d4eb8bfe6c5bd801413fc.png

 1.2 注意

①枚举数值是常量,不允许修改,且不能为小数

②枚举变量只能赋枚举内部标识符

③数据存放在FLASH(闪存)中

FLASH

在嵌入式系统等环境中, FLASH 通常用于存储程序代码和常量数据。

2. 共用体

Ⅰ 基本和结构体差不多,下面是它们的区别

①类型

结构体是struct;共用体是union

②内存

结构体成员占用独立内存空间,内存大小为各成员之和(考虑对齐),能同时存储多个成员信息;

共用体成员共享内存,内存大小为最大成员的大小,同一时间只能存储一个成员信息

Ⅱ 应用

共用体常用于节省内存。

 ①eg.在嵌入式系统中,一个变量在不同时间分别存储不同类型数据

②用于数据类型转换,eg.实现整型和浮点型数据的转换

③在通信协议中表示多种可能的消息格式,通过共用体来处理不同类型的消息内容

 

 

标签:定义,eg,学习,枚举,共用,标识符,赋值
From: https://blog.csdn.net/2401_89121263/article/details/144232916

相关文章

  • postgresql集成pgvector,postgresml,实现开源库内机器学习
    1.pgvectorhttps://github.com/pgvector/pgvector.gitcd/tmpgitclone--branchv0.8.0https://github.com/pgvector/pgvector.gitcdpgvectormakemakeinstall#可能需要加sudo权限问题记录:src/bitutils.c:1:10:fatalerror:'postgres.h'filenotfoundin......
  • B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【六】
    播放地址:20241120-.NET9.0+WPF实战三类流程化业务逻辑控制-10_哔哩哔哩_bilibili第14-15节调整代码让拖拽到控制流程图里的模块产生位移NodeModel新增两个属性X,Y记录控件的位置信息1publicabstractclassNodeModel:ObservableObject2{3publicabstra......
  • B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【五】
    播放地址:20241120-.NET9.0+WPF实战三类流程化业务逻辑控制-10_哔哩哔哩_bilibili第11-12节布局规划页面,大概分析接下来的目标第13节设计流程图控制调整页面布局,展示流程图模块1<Windowx:Class="WpfApp2.MainView"2xmlns="http://schemas.microsoft.com/winfx......
  • Web安全学习笔记之ChromeDriver驱动的站点信息精准获取与利用工具
    0x00转载本文转载与神农sec公共号 0x01开发思路采用chromedriver模拟用户的正常行为对需要获取的信息采用xpath进行数据处理数据在爬取过程中可能也会遗漏,对获取不到数据的域名我们将重复调用一次避免遗漏使用tqdm来显示进度条优化用户体验使用多线程提高爬......
  • MySQL语句学习第二篇_数据库
    专栏记录MySQL的学习,感谢大家观看。本章的专栏......
  • B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【四】
    播放地址:20241120-.NET9.0+WPF实战三类流程化业务逻辑控制-10_哔哩哔哩_bilibili第10节通过调整MainViewModel文件代码实现判断拖拽对象并生成对应组件publicpartialclassMainViewModel{publicObservableCollection<NodeModel>ProcessList{get;set;......
  • elasticsearch 学习笔记之二 常见接口
    一、索引操作类1、创建索引(PUT/索引名称)PUT/my-index-000001请求body{"settings":{"index":{"number_of_shards":3,//创建3个主片"number_of_replicas":2//每个主片都会有两个副本}}} 未指定mapping的情况下,使用默认的2、删......
  • 来学习typescript 吧! --2基础类型(any、unknown )
    一、nodejs环境执行ts1、安装类型定义包(只在开发和测试阶段被使用,而在生产环境中不会被包含)npmi@types/node--save-dev 2、安装TypeScript执行器--允许你直接运行TypeScript文件npmits-node--g 二、any类型--toptype1.没有强制限定哪种类型,随时切......
  • VUE学习
    一、VUE出现的原因是:跨平台应用它的核心库专注于视图层,使得开发者能够便捷地构建单页面应用。Vue通过简洁的API实现了响应式的数据绑定和组合的视图组件。Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。Vue具有轻量级和易上手的特点,因此在国内得到了广......
  • 来学习typescript 吧! --1基础类型(string、number、 boolean、void 、Null、undefined
    TS是JS的超集,所以js基础的类型都包含在内基础类型:Boolean、Number、String、null、undefined以及ES6的Symbol和ES10的BigInt一、安装和使用ts:1、npminstalltypescript-g//全局安装typescript2、tsc--init//生成tsconfig.json文件3、tscindex.ts//编译ts文......