一 const 介绍:const是C语言的一个关键字,它限定了一个变量不允许被改变。
二 const使用方法:
1.定义const对象:const int bufSize=512; 这样就定义了一个常量bufSize,任何试图修改bufSize值的行为都将引发错误。
同时因为const 对象一旦创建其值就无法修改,所以需要对const对象初始化。
初始化还有一种方式是利用一个对象去初始化另一个对象。例如:int i=42;const int ci=i;
默认情况下,const对象仅在文件内有效,如果需要在其他文件中使用它,需要添加extern关键字后,才可使用。
2.const的引用:
把引用绑定到const对象上,就像绑定到其他对象上一样,称之为对常量的引用。与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象。引用的类型必须与其所引用对象的类型一致,例如 const int ci=1024;const int &r1=ci;是正确的。而int &r2=ci是错误的。但是有例外情况,对初始化常量引用时,允许用任意表达式作为初始值。例如
int a=42;
const int &b=a;
const int &c=42;
const int &d=r1*2;
3.const和指针
1)指向常量的指针(pointer to const) 或者底层const
形如:const double a=10; const double *b=&a; 不能改变所指对象的值。同时只能用指向常量的指针存放常量对象的地址,即double *c=&a是错误的。
注意:是常量地址只能由指向常量的指针存放,但是没有规定指向常量的指针所指的对象必须是一个常量,所谓指向常量的指针仅仅要求不能通过该指针改变对象的值。
2)常量指针(const pointer) 或者顶层const
形如:int a=0;int *const b=&a; *放在const之前,用以说明指针本身为常量,即指针地址不能再改变,所以常量指针必须初始化,而且一经初始化不能再变。
指针本身是一个常量并不意味着不能通过指针修改所指对象的值,能否这样做取决于所指对象是否是常量类型,如果所指对象是常量类型,则无法通过指针修改对象的值,即const int a=0;int *const b=&a;*b=1是错误的。相反,如果所指对象不是常量类型则可以通过指针修改对象的值。即int a=0;int *const b=&a;*b=1是正确的。
4. const和函数
1)类中的const成员函数(常量成员函数)
任何不会修改数据成员的函数声明为const类型。调用格式:<类型说明符><函数名>(参数列表) const;
2)const修饰函数返回值
含义和const修饰普通变量以及指针的含义基本相同。
3) const修饰函数参数
参数为一般变量:如:void function(const int a); 传递过来的参数在函数内不可以改变
参数为指针情况1:如:void function(const int *a);参数所指的内容为常量不可变
参数为指针情况2: 如: void function(int const *a);参数指针本身不可变