速记:
const*:常量指针
*const:指针常量
顶层const:*在const的左边,如int* const
底层const:*在const的右边,如int const*
底层const(常量指针)
定义了一个指针,不能通过常量指针改变这个对象的值
不能通过任何形式的常量指针修改这个对象,但是这个常量指针可以更改
形式
数据类型 const* 变量名 = 地址;
const 数据类型* 变量名 = 地址;
示例
int temp = 10;
const int* a = &temp;
错误1:通过常量指针修改指向对象的值
*a = 100;
正确1:更换常量指针的指向
int *temp2 = 100;
a = &temp2;
正确2:通过变量名更改常量指针指向的对象
temp = 1000;
顶层const(指针常量)
定义了一个指针,这个指针的值只能在定义时初始化
强调的是指针的不可变
形式
数据类型* const 指针变量 = 变量名;
示例
int temp = 10;
int temp1 = 12;
int* const p = &temp;
错误1:修改常量指针的所指对象地址
p = &temp2; // 错误,不可更改指针常量的地址值
正确1:通过变量名更改变量值
temp = 10; //正确
正确2:通过常量指针更改变量值
*p = 9; // 正确