c语言中const关键字和枚举enum的新认识

首先大家思考一个问题,c语言某个源文件中的环境,也就是说哪些前提已知的情况。

(1)在c语言中如何表示一个常量,大家都能想到使用的是宏定义#define。当然了宏定义#define的用法还有其他的,例如寄存器地址,寄存值所表示的类似内存的空间中。

(2)那么如何表示一组常量呢,也就是说多个常量,并且这些常量天然的是被绑定在一起的,答案是使用enum定义一个枚举类型,并将这一组常量包含在一对{}中,并用"="对这些常量进行赋值。

(3)大家再思考一个问题,除了上述2种情况,还有一种情况就是需要用到一段字符串、一段具体的数字、一个"表格"这种情况,最常见的情况例如表示一款设备或芯片的型号"s5pv210",一款芯片的生产日期"20251025",一个时间点"09:12:30"等等。显示中这种情况是存在的,那如何用c语言表示出来呢?大家能想到的是使用一个数组,例如u8 str\[\] = {'s', '5', 'p', 'v', '2', '1', '0'};这样很好,但是存在一种问题就是这个数组是存在全局变量中的,如果是单片机这种内存有限的环境,如果定义一个特别大的"表格"例如一些算法需要用的查表法就是定义了一个很大的表格。总之很容易受限。这个时候就需要用到关键字"const",它修饰的变量是一个常量,const u8 str\[\] = {'s', '5', 'p', 'v', '2', '1', '0'};而且const修饰的常量,如何在后面编写代码的时候被不小心写另外一个数值的时候,编译器会报错。

相关推荐
愚公移码10 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮10 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
Echo缘11 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
JaneConan11 小时前
鸿蒙 ArkUI 深水区:@Watch 和 @Observed,状态变了「自动跑」+ 嵌套对象「深层重绘」
开发语言·后端·ui·harmonyos
赤水无泪11 小时前
qt中图标、名称的设置方式
开发语言·qt
王莎莎-MinerU11 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
橘子海全栈攻城狮11 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring
在水一缸12 小时前
深入浅出 Catch2:现代 C++ 测试框架的优雅实践
开发语言·c++·单元测试·log4j·测试框架·catch2
-银雾鸢尾-12 小时前
C#中Object类内的方法
开发语言·c#
浮江雾12 小时前
Flutter第十节-----Flutter布局与组件全解析
android·开发语言·前端·学习·flutter·入门