一. const是什么
const在c语言中是关键字,是constant的简写,用来定义常量,它限定一个变量不允许被改变,产生静态作用。被const修饰的变量,我们称之为常变量,那有一个问题经常就会困扰初学者,常变量究竟是常量呢还是变量?
二. 验证方法
以下笔者使用VS2022进行验证常变量的本质。我们知道在定义数组的时候需要申明数组的大小,并且需要使用常量来申明。
int main() { int arr1[10] = {0};//数组在定义时,应申明大小,并且应是常量,如这里的10 return 0; }
如果在申明的时候使用的是变量,那么编译器就会报错
int main() { int n = 10; int arr2[n] = { 0 };//这里的申明是错误的,编译器会报错应该使用常量表达式 return 0; }
如图所示
三. 验证const的本质
知道了以上的原理,那我们就可以开始测试
int main() { const int n = 10; int arr3[n] = { 0 };//这里仍然会报错 return 0; }
因此,const修饰的常变量本质上还是变量,只不过是被赋予了常量不可改变的属性
四. 例外
但是,值得一提的是,这样的语法只是在c语言里适用,如果换成c++,则会发现不一样的现象,我们新建一个cpp文件
int main() { const int n = 10; int arr4[n] = { 0 };//此时在c++的语言环境下并不会报错 return 0; }
我们可以发现,编译器并不会有任何的警告,程序完全能正常运行
在c++里,被const修饰的变量是直接被当成常量来使用的,因此使用常变量来申明数组的定义,并不会有任何的报错