const :译为恒定不变的意思;所以被const定义过的变量人们经常叫它常量,但这个是不准确的。在精确的来说在C中被const修饰过的变量其实本质上还是变量,没有变成常量,只是属性变成了只读,不可修改。但在C++中被const修饰过的变量就变成了常量。为了验证这个事实大家可以通过下方代码进行测试。
大家先分别创建.cpp和.c文件进行测试看看结果:
//分别建一个.cpp文件和一个.c文件运行以下代码看看结果
#include<stdio.h>
int main()
{
const int Max=100;
int arr[Max];
}
测试后我们发现,同样的代码在.c文件也就是在C中是无法通过的,但在.cpp文件也就是C++文件是可以编译通过的.那么原因是为什么呢?
我们知道定义数组时必须制定数组的大小, 如果在C中被const修饰的变量变成了常量那肯定可以通过,所以也就证明了C中const修饰的变量仍然是变量,只是属性只读而已.如果像C++中是常量那就直接通过了
注意:const修饰的变量必须在定义时进行初始化,原因是:和const的特性有关,const把变量的属性变为只读,意味着无法进行修改只能读取该变量的值,所以你定义的时候不初始化以后就没机会初始化了.那没有初始化的变量还和废物有什么区别。
const的使用:
1、修饰一般变量
const int a=10;表示a是一个常变量不可修改。也可以表示为int const a=10;
2、修饰数组
定义一个只读数组可以采用下面的格式
int const a[5]={1,2,3,4,5};
或者
const int a[5]={1,2,3,4,5};
3、修饰指针
const int*p //p可变,p指向的对象不可变;
int const *p//p可变,p指向的对象不可变;
int * const p;//p不可变,p指向的对象可变;
const int * const p;//指针p和指针p指向的对象都不可变;
4、修饰函数的参数
const修饰符可以修饰函数的参数,作用是不希望在函数体内被意外使用.
比如说:void(const int *p)
5、修饰函数的返回值
比如:const int fun();
以上就说C中const的使用,在C++中还有些补充.感兴趣的可以自己研究一下