const修饰指针

今天我看了一下const修饰指针的几种情况,总结一下:

int b = 500;
1、int const * a=&b;
2、const int *a = &b;
3、int * const a = &b;
4、const int * const a = &b

总结一句话就是,const关键字在*之前,修饰的指针所指的对象;const关键字在*之后,修饰的是指针本身;所以上面情况1和2是同一种情况——表示的是指针所指的内容是常量。在这种情况下,不允许修改内容。

int b = 500;
int const * a=&b;
*a=600;//错误❌

如果我们真的要改变*a的值,可以这样做:

int c =700;
a=&c;
cout<<*a<<endl;//结果为700;

在情况1和情况2下,因为只是指针指向的内容是常量,但是指针本身并不是常量,所以在声明的时候,可以不进行初始化;也就是说

const int *a;//✅

而情况3,const修饰的指针,就是说此时我们的指针是一个常量,也就是说,在初始化指针以后,我们就不可以改变指针的值。但是指针指向的内容是可以改变的。也就是说

int b = 500;
int * const a = &b;
*a=700;
cout<<*a<<endl;//结果为700

最后一种情况,指针本身和指向的内容都是常量,都是不可以改变的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 1,878评论 0 9
  • 基本内置类型 算术类型字符整型布尔值浮点数 空类型(void) 算术类型 带符号类型和无符号类型int、short...
    2625K阅读 3,357评论 0 1
  • 一、概述 用const限定来限定值不能被改变的变量。一个变量被const限定后,值不能被改变,只能在con...
    王一百阅读 652评论 2 3
  • 王总离开车展坐在自己的劳斯莱斯上和朋友说:“今天那个女的怎么样?”刘洋说:“挺好啊,怎么了?你想上她?那简单,我现...
    流氓豆阅读 493评论 5 3
  • 刚**同学,湖南工程学院 自动化专业,应届毕业生。2016-9-29 10K入职 1. 如何积攒自信 当你坐在面试...
    嵌入式学习阅读 282评论 0 1