const与指针在一起的几种情况。
const int *p1; //表示p1本身不是const,指向的变量是const.
const *int p2; //语法错误
int const *p3; //表示p3本身不是const,指向的变量是const.
int *const p4; //表示p4本身是const,指向的变量不是const.
const int *const p5; //表示p4本身是const,指向的变量是const.
区分p本身是const还是指向的变量是const,一个简单的办法就是:去除掉类型,再分析。
例1:
const int *p1;
去掉int后就是:const *p1; 可以理解为const (*p1);就表示p1本身不是const,指向的对象是const。
例2:
int *const p4;
去掉int后就是:*const p4; 可以理解为* (const p1);就表示p4本身是const,指向的对象不是const。
最后,上面的分析方法仅仅是一种理解,在语法上是没有const *这种直接修饰的,其中" const *int p2 " 就是一个错误的例子。