const int *p; // const修饰的是*p,因此*p是常量不能改变,但可以改变p的指向;
int const* p; // 同上,主要是看const与*的前后关系;
int* const p; // const修饰的是p,因此p的指向是常量不能改变,但*p可以改变;
const int const *p; // 两个const既修饰了*p也修饰了p,因此*p与p都是常量不能改变;
注:以上是针对p使用的时候来说的,具体解释如下。
- const *p // a=*p;如果a的值等于1,那么a就永远等与1,P代表的是地址,就是说这个地址是可以变化的,把内存分成1-10层楼房,那么1可以住在任何一间房子里面,就是说P是门牌号,可以变化,但是房子里面的内容不会变化
- *const p // a=*p;如果a的值等于1,那么你可以重新赋值给*p=2,这个时候在a=*p,a就变成2了,就是说房子里面的内容可以变,但是门牌号不会变