指针常量,常量指针,害,每次都记得了,最后还是概念不清,索性好好记录一下,希望能对你有一些概念上的理解。
其实C++一些常见命名都是有规律的。比如指针常量突出是一个指针指常量的概念,常量指针则突出一个指针为常量的概念,指针数组突出一个数组的概念,数组指针突出一个指针的概念。
1.常量指针 pointer to const
表示该指针指向一个常量,不能更改指向的地址的值(常量类型的指针),也是底层const
表示为int const *p。(就按照顺序读即可,const * 常量指针)
表示该指针指向的为一个常量,不能解引用更新这个常量的值,但是这个指针是可以指向其他的
比如我记得你家的位置,你念旧,从不更新家的装修,我也没法劝你,我去记别人的家去hh
int a =10,b=20;
const int *p =&a; //底层cosnt
p=b; //可以,我可以改变指向
*p=20; //报错,我不能改变指向的值
2.指针常量 const pointer
指针常量为一个指向常量的指针,该指针指向常量。也是顶层const
表示为 int const*p 或 const int *p (这两种表示皆可)
表示该常量永远指向这个指针所指向的地址,我保证的是我永远指向你的地址,但是这个地址的值是可以改变的。
比如我永远记得你家的位置,但是你可以在你家的位置随便盖房子。
int a=10,b=20;
int *const p=&a; //顶层const
*p=20; //可以,我可以改变指向的值
p=b; //报错,我不能改变指向