C语言是如何定义常量的?const定义的算不算是常量?
常见的有这么几种方式。
首先就是宏定义,使用 define 来定义。
宏的特点就是在预处理的时候被替换,比如这个地方的 SIZE,预处理后就会变成数字 5。
第二种跟宏定义类似,常量也可以在编译的时候通过编译器传入。
以 gcc 为例,编译的时候提供 -D 选项,同样会在预处理的时候替换成相应的数字。
第三种枚举,使用 enum 关键字。
枚举的特点是默认从 0 开始,逐渐递增。如果需要大量含义相同的常量,可以考虑使用枚举。
下面要说的就是 const,定义数组的时候,如果数组的长度仅仅用 const 来修饰,在编译的时候就会提示错误。
const修饰的不是常量,属于只读变量,这一点在《C专家编程》中也有描述。在一个符号前面加上 const 限定符只是表示这个符号不能被赋值。
为了解决这个问题,C23专门引入了新的关键字 constexpr,用 constexpr 修饰的才是真正的常量,不管是用它定义数组长度,还是给枚举赋值都可以。这是个正儿八经的常量。
除了上面几种,代码中常见的还有字符串常量,比如这样的,"helloworld"属于字符串常量,在代码运行过程中不能修改。
还有没有其他定义常量的方法,如果有遗漏,欢迎大家在评论区补充。
-
C语言
+关注
关注
180文章
7614浏览量
137469 -
CONST
+关注
关注
0文章
45浏览量
8180
原文标题:const定义的是不是常量
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论