1、常量指针
常量const在指针前。指针指向可以修改,指针指向的值不可以改。
int a = 10;
int b = 20;
const int *p = &a;
*p = b; // 错误,指针指向的值不能改
p = &b; // 正确,指针指向可以改
2、指针常量
常量const在指针后。指针指向不可以修改,指针指向的值可以改。
int a = 10;
int b = 20;
int * const p = &a;
*p = b; // 正确,指针指向的值可以改
p = &b; // 错误,指针指向不能改
瞎编的记忆方法:指针常量即指针是常量,所以指针指向不能改,指针指向的值可以改。
3、const即修饰常量又修饰指针
指针指向和指针指向的值都不可以修改。
int a = 10;
int b = 20;
const int * const p = &a;
*p = b; // 错误,指针指向的值不能改
p = &b; // 错误,指针指向不能改