const定义的是不是常量

描述

C语言是如何定义常量的?const定义的算不算是常量?

常见的有这么几种方式。

首先就是宏定义,使用 define 来定义。

宏的特点就是在预处理的时候被替换,比如这个地方的 SIZE,预处理后就会变成数字 5。

第二种跟宏定义类似,常量也可以在编译的时候通过编译器传入。

以 gcc 为例,编译的时候提供 -D 选项,同样会在预处理的时候替换成相应的数字。

第三种枚举,使用 enum 关键字。

枚举的特点是默认从 0 开始,逐渐递增。如果需要大量含义相同的常量,可以考虑使用枚举。

下面要说的就是 const,定义数组的时候,如果数组的长度仅仅用 const 来修饰,在编译的时候就会提示错误。

const修饰的不是常量,属于只读变量,这一点在《C专家编程》中也有描述。在一个符号前面加上 const 限定符只是表示这个符号不能被赋值。

为了解决这个问题,C23专门引入了新的关键字 constexpr,用 constexpr 修饰的才是真正的常量,不管是用它定义数组长度,还是给枚举赋值都可以。这是个正儿八经的常量。

除了上面几种,代码中常见的还有字符串常量,比如这样的,"helloworld"属于字符串常量,在代码运行过程中不能修改。

还有没有其他定义常量的方法,如果有遗漏,欢迎大家在评论区补充。
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分