const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:
声明指针时,可以在*前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:
const int * pOne; //指向整形常量 的指针,它指向的值不能修改
int const * pOne; //等同于const int * pOne;
int * const pTwo; //指向整形的常量指针 ,它不能在指向别的变量,但指向(变量)的值可以修改。
const int *const pThree; //指向整形常量 的常量指针 。它既不能再指向别的常量,指向的值也不能修改。
理解这些声明的技巧在于,查看关键字const在*号的前面还是后面 ,如果const在*h前面,则值是常量;如果const在*后面,则指针本身是常量。下面的代码有助于说明这一点:
const int *p1; 等效于 int const *p1;//the int pointed to is constant
int * const p2; // p2 is constant, it can't point to anything else
直观的理解为当const在*前面时,*和指针一起表示值,所以值为常量。当const在*
后面时,*和指针分离,const只修饰指针,所以指针为常量,值可以改变。
联系客服