文章目录
- 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有一个清楚的认知和记忆。
如果本文有任何问题,欢迎大家留言。