const使用,指针常量与常量指针


强烈推荐同勉共进大佬的博客,关于指针常量和常量指针讲的真好!
理清C++常量指针和指针常量这团乱麻

一、const 是什么?

const 可以翻译成“常量”,即不可被改变的量。通常用于修饰变量让其内容在初始化后都不可以改变它,相当于 read-only(只读)。用它的目的是用语法的行为保护变量的值不被意外的修改。

全局变量加 const,其会被创建在常量区;而局部变量加 const 只能做语法级的初步检测,但是绕过变量名的访问就出现了矛盾。

const 在指针变量的修饰方面可以存在于两个位置的修饰,即指针常量和常量指针。

二、指针常量

更确切的来说应该是指向变量的指针常量

该指针指向一个常量,常量的值不可变,不可以通过该指针修改其值,但是该指针可以指向其他常量。(指针地址可以变,值不能变)

避免指针不能指向其它的变量,格式为:int* const p = &a

三、常量指针

更确切的来说应该是指向常量的指针变量

指针本身是常量。该指针只能指向某个常量,不可再指向其他常量。(指针地址不可变,值可变。注:指针常量在定义时要赋初值。)

所谓“指向常量”只是这个指针的“一厢情愿”,只是一种效果上的等价。事实上,const int *p=&a;a既可以是常量(const int a=10;)又可以是变量(int a=10;),但p一厢情愿地认为它所指的就是一个常量,所以它不允许通过自己来修改所指,这就造成一种效果上的等价——从p的角度看,它所指的“的确”是常量。所以,对“指向常量的指针”的最佳理解应为:我们不能通过该指针修改它所指向的东西(常量或者变量)。

避免指针不可修改其内容。格式为:int const* p = &a;(放在 int 前也可以(const int *p = &a;))

四、指向常量的指针常量

没啥说的,格式:const int* const p


二者分辨

区分:从右往左读。或者先找到*,然后看*的两边,右边是对指针p本身的限定,左边是对p所指向的东西的限定。

引用是一个指向不可变的、被编译器自动解引用的指针,即,引用是一个被编译器自动解引用的“本身是常量的指针”。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力找工作的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值