指针常量指针不可变,常量指针常量(指针指向的内容)不可变(伪不可变)。
指针常量:类型为指针的常量
- 定义: int * const a//*为指针,const为常量,简单记忆 *const为指针常量
- 本质上是常量,类型是指针,指针是一个地址,所以指针常量永远保存着一个地址,不可变动:即指向固定地址的指针。
- 地址中的保存的数字或其他东西可以随意变化,但是指针常量永远指向它。
- 总结:固定的一个指针!
常量指针:指向常量的指针
- 定义 const int *p//const在前—常量,*在后—指针=常量指针
- 指针可以随意指向其他地址,但是指针内部的元素不可改变。注意:仅仅是不可以通过调用指针来改变内部元素,但是可以通过其他方法改变。
//例如
int a=2;
const int *p=a;
*p=3;//错误操作,无法通过指针改变内部元素
a=3;//正确操作,可以通过其他方式改变
所以常量指针只是“自以为是”觉得自己指向了常量。
3. 总结:不可以通过指针修改所指向的位置
可能会看的很晕,记住:从右向左阅读,就近结合,结合以后看看const修饰的是什么,就知道什么是不可变的了。
顶层const和底层const
顶层const:指针本身是个常量
底层const:指针所指对象是个常量