有关常量指针和指针常量的理解常常让人产生混乱,现作简要说明以备忘。通常指针和const在一起的运用有如下四种:
const int *p; // p 可变,p 指向的对象不可变
int const *p; // p 可变,p 指向的对象不可变
int *const p; // p 不可变,p 指向的对象可变
const int *const p; //指针p 和p 指向的对象都不可变
去除类型说明int,按照就近原则理解:第1、2行const修饰的是*p,既*p为常量;第3行const修饰的是p,既p为常量;第4行const既修饰了p也修饰了*const p,所以p和*p均为常量。注:这里p是指针既地址,*p是指向的对象。
另外,第1、2行中的p成为常量指针,既指向常量的指针;第3行中的p则为指针常量,既 指针本身是常量。