C++中,指针部分是重点,且比价容易混淆
1,指针常量
int* const p1 = &a; // 指针常量,指向不可修改,即p1不可修改;
*p1 = b; //指向的值可修改,即*p可修改
如果写成 p1 = &b就是错误的,因为在这里const修饰的是p1,所以p1不能修改
2,常量指针
const int * p = &a; // 常量指针,指向的值不可修改,即*p不可修改;
p = &b; // 指向可以修改,即p可修改
如果写成 *p = b,则是错误的,因为这种情况下,const 修饰的是*p,所以*p不能修改
总结:可根据const的位置判断区分,当const靠近p时,则p不能修改,p代表的就是其指向;当const靠近*时,则*p不能修改
*p代表的则是指针指向的值。