const关键字与指针

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 " 就是一个错误的例子。

 

你可能感兴趣的:(const关键字与指针)