int const *p = &a;
顺带说明下 const int *p 和 int const *p 其实是一个意思,我习惯统称为*号前。
在*号前面的作用:
为什么会这样呢???
下面这幅图表明了意思 const *pa 只是将*pa保护了起来,直接使用*pa 就是直接调用a,所以你不可能 *pa = 4 这样来改变值
但是它还有另一种改变的方式,就是将第二次的地址换掉,pa = &b
就好比,有个按钮,按了就发射核弹了,你为了保护这个按钮,给它做了个很强大的保护罩,我无法下手,那我直接把按钮连接的线接到另一个东西上,你在按动按钮,确实通电了,但却不在是连接核弹了
int a = 3;
int * const pa = a;
下面这个图简要说明了下
const 保护的是 pa装载的地址 也就是 a 地址
这时候这块东西是无法做任何改动的,pa 是无法操作的,那就通过*pa 来进行操作
总结下来,const 保护的是它右侧的数据
const *p ->保护 *p ,*p的调用方法就无法使用
* const p ->保护p ,p的调用方法就无法使用