(1) 可以声明指向常量的指针,此时不能通过指针来改变所指向对象的值,但指针本身可以改变,可以指向另外的对象。例如:
int a;
const int *p1=&a; //p1是可以指向常量的指针
int b;
p1=&b; //正确,p1本身的值可以改变
*p=1; //编译时出错,不能通过p1改变所指的对象
使用指向常量的指针,可以确保指针所指向的常量不被意外更改。如果用一般指针存放常量的地址,编译器就不能确保指针所指向的对象不被更改。
(2) 可以声明指针类型的常量,这时指针本身的值不能被改变。例如
int * const p2=&a;
p2=&b; //错误,p2是指针常量,值不能改变