【C++填坑】常量指针,指针常量
常量指针:
const int* p; //常量指针:指向常量的指针。
为什么这么叫,怎么记?
看上面的格式,从左向右依次,先是const常量,再是int*指针。所以是常量指针。
指针常量:
int* const p; //指针常量:被指针修饰的常量。
为什么这么叫,怎么记?
同上,从左向右依次。
上述介绍完是个啥,下面进行详细解释!
首先先了解常量和变量的区别:
变量
上图可以看出,同一变量不会因为值的变化而改变变量的地址,但不同变量拥有不同的地址。
常量
加了const后就成为常量,作为常量就要有常量的尊严,不是轻易就可以改变值的。当然它的地址也不会变化。
结合上述,在分析一下常量指针和指针常量:
常量指针
本质是一个指针,再具体点是一个指向常量的指针。那它仅仅是个指针,具体指向哪个常量就不一定了(也就是指向可以变化)。
int a,b;
const int *p = &a //常量指针
*p = 9;//操作错误
p = &b;//操作成功
指针常量
本质是一个常量,再具体点是一个指针类型的常量。因为常量代表值不能变换,所以它的指向就不能变了(指向不能变化,但指向的常量的值是可以变化的)。
int a,b;
int * const p = &a //指针常量
*p = 9;//操作成功
p = &b;//操作错误