const意味着“只读”
int a = 10;
int *p = &a;
此时p可以被修改,*p也可以被修改
那么当使用const修饰时,const到底修饰的是p还是*p呢?与a无关
const int *p = &a;
此时const修饰的是*p,也就是p可以被修改,*p不能被修改
int *const p = &a;
此时const修饰的是p,也就是*p可以被修改,p不能被修改
总结:const在*左边,表示*p不能被修改
const在*右边,表示p不能被修改
const离谁近就修饰谁
const int *const p = &a; //p和*p都不能被修改
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。