顶层const与底层const
const int* a
:这里的const修饰的是int
,而int
定义的是一个整型值a
。因此*a
所指向的对象值不能通过*a
来修改。但是可以重新给a
赋值,使其指向不同的对象int* const a
:这里的const修饰的是a
,a
代表的是一个指针地址。因此不能赋值给a
其他的地址值,但可以修改a
指向的值,如*a = 1
const int* a
与int const* a
两者等价const int* const a
:a
所指向的对象的值以及地址a
本身的值都不能被修改
总结
const修饰变量主要看const位于*的左边还是右边