* (指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容; 谁在前面谁就不允许改变。
int a =3;
int b = 1;
int c = 2;
int const *p1 = &b; //const 在前,定义为常量指针 ;int 在前指向的int类型值内容不能变
int *const p2 = &c; //*在前,定义为指针常量 ;int* 在前指针不能变,永远指向c的地址
|
常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
p1 = &a是正确的,但 *p1 = a是错误的。
指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。
p2= &a是错误的,而*p2 = a 是正确的。
int a=20;
const int* pa=&a; //常量指针,a的值不能再更改;相当于上面的 int const *pa = &a;
常量指针所指向的内容是不可修改的
int * const pb=&a; //指针常量,pb 不能更改,再去指向其它地址
因为指针常量是一个常量,在声明的时候一定要给它赋初始值
虽然指针常量的值不能变,可是它指向的对象是可变的