C++学习之路(1)
在学习C++的过程中会遇到一个头大的问题,就是关于const int *a, int const *a,int * const a和const int * const a的彻底理解与辨析,下面分享下经验
操作方法
- 01
const int *a这里const 修饰的是int,而int定义的是一个整值,因此*a 所指向的对象值不能通过 *a 来修改,但是可以重新给 a 来赋值,使其指向不同的对象。
- 02
int *const a 这里const修饰的是 a ,a代表的是一个指针地址,因此不能赋给a其他的地址值,但可以修改a指向的值,这有点和cont int *a相反。
- 03
int const *a 和 const int *a 的意义是相同的 他们两个的作用等价。
- 04
const int * const a 这个代表a所指向的对象的值以及它的地址本身都不能被改变。
- 05
总结一下:const 是一个左结合的类型修饰符,它与其左侧的类型修饰符和为一个类型修饰符,所以,int const *a 和 const int *a 意义相同,int const *a限定的是*a,不是a(也即a可变,*a不可变),同理,int *const a限定的是a,不是*a(也即a不可变,*a可变),清楚了吧!
- 06
C++ 你成功的不二选择
赞 (0)