const int *p 与 int *const p的区别 最方便理解的记忆方法

文章目录

  • const int  *p
  • int const  *p
  • int *const  p
  • const int * const p
  • 总结

如果您对这几个有一定的了解,或者只是记忆模糊不清建议您直接看本文最后总结部分,相信对您有一个更好的理解记忆方式,如果您对此比较陌生,建议您从头观看,直观感受。

强调:总结是精华本分。


一、const int  *p

直接上代码

 这段代码会报错,那么为什么会报错,原因就是const封锁了*p   *p是一个常量,所以他是不可以更改的。

 这里就是说*p是常量  但是和我a没有关系   a本身还是可以修改,a本身是个变量。

 哪如果我改变p的指向呢  编译器也不报错,这就说明const他根本修饰的是*p ,对p的指向没有任何的影响。我们继续看下面的文章来看。

二、int const  *p

int cosnt *p与 const int *p 效果一样在这里不在多说。

三、int  *const  p

大家和上面的对比一下,仅仅将const int *p改成了 int *const p。但是效果大大的不一样,这是因为const修饰的对象不一样了,int *const p=&a; 其中的const修饰的是p  p是一个指针,加了const说明其指向不能在改变了。

大家对比一下,在这里p指向不能改变,但是*p又不影响。很多人就很好奇const到底修饰哪一个。该怎么判断,下面我们把示例看完在总结部分会详细说怎么判断。

四、const int  *const  p

正如大家想的那样,如果前后都加了const,那么*p 和 p都将不能改变。上面的所有实例让我们有了一个清醒的认知,但是怎么判断呢,记忆呢,请看下面。

总结

 我们举一个显示生过中的例子。看图记忆。

 

好了说到这里,我相信大家会对这四个经常让人搞混的const有一个清楚的认知和记忆。

如果本文有任何问题,欢迎大家留言。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值