世界杯举办地_世界杯预选赛巴西 - emsxbc.com

const修饰符总结

1、什么是const?

const就是constant的缩写,意思是“恒定不变的”,它是定义只读变量的关键字,或者说const是定义常变量的关键字,常类型的变量或对象的值是不能被更新的

2、为什么引入const?

const推出的初始目的,就是为了取代预编译指令,消除它的缺点,同时继承它的优点

3、const有什么主要的作用?

(1)可以定义const常量,具有不可变性。例如:const int MAX = 100; int array[MAX];

(2)便于进行类型检查,使编译器对处理内容有更多了解,以消除一些隐患

例如:void f(const int i) {......}编译器就会知道 i 是一个常量,不允许修改。

(3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。还是上面例子,如果在函数体内修改了 i ,编译器就会报错

例如:void f(const int i){ i = 1001;} error!

(4)为函数重载提供了一个参考

class A{

void f(int i) { ...... } //一个函数

void f(int i) const { ...... } //上一个函数的重载.....

};

(5)提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

4、const的使用

const在实际中用得并不多,先列出如下const短小总结,const关键字修饰指针,const在*号的左边还是右边(左定值,右定向)

1.const int a; //a是一个常整形数

2.int const a; //a是一个常整形数

3.const int *a; //a是一个指向常整数型的指针(整形数是不可修改的,但指针可以)

4.int const *a; //a是一个指向常整数型的指针(同上)

5.int *const a; //a是一个指向整形数的常指针(指针保存内容不可修改)

6.int const * const a; //a是一个指向常整形数的常指针(指针指向的整形数是不可修改的,同时指针也是不可修改的)

(1)int const * ;

int const *a 和 const int *a意义一样。

从右往左看,进行解析,这个a是一个指针,而且是一个常量,类型是整形,称为指针常量

特点:*a指向一个整形的常量,但是不能通过修改p所指向内存单元的值,只能通过修改其所指向的对象,可称为指向常整形的指针

int data = 88;

const int number = 99;

const int *p1 = &number;

p1 = &data; //允许通过编译,允许修改所指向的对象

*p1 = 10086; //不允许通过编译,无法通过指针修改内容

(2)int * const a;

从右往左看,一个常量a被定义为整形指针。可称为指向整形的常指针

特点:常量a是一个整型类型的指针,它能通过指针来进行修改其中的内容,但当它已经指向一个地址之后,便不能再指向其他地址,和int const*有区别

int data = 88;

int k = 99;

int * const p2 = &data;

*p2 = 10010; //允许通过编译,允许通过指针修改内容;

p2 = &k; //不允许通过编译,无法修改所指向的对象;

(3)const int * const p;

从右往左看,结合上面两个,可以看做常量指针常量,即常量p是一个整形的指针,而且这个指针还是个常量

int data = 88;

int k = 99;

int const * const p3 = &data;

p3 = &k; //不允许通过编译

*p3 = 4399; //不允许通过编译