const关键字是用来修饰变量的,它修饰的变量在程序运行的过程中不能发生改变,即不能进行二次赋值。那么当出现以下情况:
1、const int *p;
2、int const *p;
3、int * const p;
在这三句话中,总共有两个变量,分别是指针指向的整型数据和指针。如果修饰的是整型数据,那么*p即指针指向对象的内容不能发生改变;如果是指针的话,那么p即指针指向的对象不能发生改变。让人不禁流汗,const关键字,你还知道你在和谁贴贴嘛。
接下来, const关键字的真正(修饰)对象。
一、种子选手1号:const int *p;
经过一番试探,可以很明显的看到,在这种情况下,它修饰的是指针指向的整型数据,而不是指针。因为指针改变指向没有报错,反而当我改变指向对象的内容的时候,系统表示*p只处于只读状态,即const关键字当前修饰的是整型数据(指向对象的内容)。
二、种子选手二号:int const *p
通过编译可以看到,它和const int *p修饰的对象是一样的,也是整型数据,即指向对象的内容不能发生改变。
三、种子选手三号:int * const p;
通过编译我们可以看到,此时const修饰的变量是指针,指针在运行的过程中指向的对象不能发生改变。
总结一下,const关键字只有在和指针贴贴的最近的时候,修饰的对象才是指针,在其余情况下修饰的都是指针指向的内容。
|