C++中我们常常会遇到下面的两种写法:
const int * a;
int * const b;
这两种写法明显代表不同的涵义
第一种代表指向一个整形常量的指针
第二种代表一个指向整形的指针常量
第一种const修饰的是整形,意味着指针所指向的整形是不可以改变的,但是该指针可以改指向其他整形。
第二种const修饰的是指针,意味着指针所指向的整形数值是可以改变的,但是指针不能指向别的整形。
那如何更好地记住这两个含义呢,笔者总结出了一个小技巧:
直接翻译法
const int * a 直接翻译过来就是“常量整形指针”
int const * b 翻译过来就是“整形常量指针”
我们只要记住常量在哪一个词前,就代表修饰该词,所以“常量整形指针”说明整形才是常量,指针可以变,“整形常量指针”说明指针是常量,整形可以变。