快速理解左值,右值,const关键字

这里主要想讲一下 const 的用法,左值,右值顺便提一下。

左值和右值是针对赋值操作符 = 而言的,=左边是被赋值的一方,数据发生了变化,左值的意思取的就是“可变”的意思,相对的右值在 = 号右边,数据没有发生变化,右值取的就是“不可变“的意思。这样理解一下,左值右值的含义基本就明了了。

这里主要讲一下const 关键字,希望听我说完你对这个关键字的用法能够非常清晰。

const 全拼为constant 意思是恒定的,不变的,对于我们来说理解为常量化可能更熟悉一些。

下面开始举例

 

这里定义一个 int 类型的 a 的变量,用const进行修饰,那么我们将不能通过 a 来修改相对应的值,比如a = 20; 就会被判定为语法错误。如下图(这里你需要注意一下,我说的是我们将不能通过 a 来修改相对应的值,希望等你看望这篇文章的时候再回过头来读一下这句话,看看能不能有新的理解)

运行结果如下

结果提示变量 a 是只读的,也就是const关键字对变量 a 进行了常量化。 

 下面,我们用 const 关键字来修饰一个指针。(想看懂下面的举例,你需要对指针有比较不错的了解才可以)

这里我还是要说的详细一点,先从 int* b 开始说起,请注意int 和 * 分别代表不同的涵义。*代表 b 是一个指针变量,而int代表的是 指针b所指向空间的数据类型,那么此时const修饰的就是当我们解引用时访问的空间,那么换种方式,如果把 const 的位置变一下呢?改成 int* const b = &a;那么这个时候 const 修饰的就是变量 b 所代表的空间。下面开始举例

接上图

 如果此时我们想用 *b 来改变 a 的值是做不到的。

结果显示*b是只读的,注意:这里说的是*b 是只读的,并不是变量 a 代表的空间是只读的。而我们此时依旧可以通过a 变量来修改其相对应的值。代码如下

通过a 变量我们成功修改了其对应的值,注意:*b 和 a 访问的是同一块空间,但是一个能改一个不能改,这里就会对 const 关键字有更细致的了解。再换一种方式举例 

 

这里我们让const 修饰 变量 b ,那么结果就会不一样,我们将能够通过*b 来修改a 中的值,运行结果如下

 

 而此时我们将不能够修改指针 b 的值,代码如下

如我们所预料,变量b 变成只读的了。

到这里基本上就把const 说明白了,我想这里能懂的话,const引用应该也是没什么问题的。

最后再加一句,const int* b; 和int const * b; 这两句话代表的含义是一样的,关键看const是在 * 的左边还是右边。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值