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修饰的常量,如何在后面编写代码的时候被不小心写另外一个数值的时候,编译器会报错。

相关推荐
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园14 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob14 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享14 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.14 天前
C语言--day30
c语言·开发语言
玖玥拾14 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..14 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽14 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下14 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php