一、不能修改所指变量内容的指针
声明指针时,将const放在 ‘*’ 前面,代表不能通过这个指针改变所指变量的值,但可以改变这个指针所指向的对象。这种称作底层const
int a = 1;
int b = 2;
int const *p1 = &a;
const int *p2 = &a; //与上一条语句等价
*p1 = 2; //错误,不能通过p1修改变量a的值,但可以直接给a重新赋值
*p2 = 3; //错误,同上
p1 = &b; //正确,可以改变p1的指向
二、不能修改所指的变量的指针
将const放在 ‘*’ 后面,称作顶层const,这样声明的指针必须初始化,且不能改变所指的对象。
int a = 1;
int b = 2;
//int *const p3; //错误,必须初始化
int *const p3 = &a; //p3只能指向a
*p3 = 4; //正确,可以通过p3修改a的值
p3 = &b; //错误,不能修改p3的指向