《C++中的引用》

引用的定义:对地址(变量)取别名,对引用的操作与对原变量的直接操作效果完全一样。

声明方法:类别标识符&引用名=目标变量名

引用的实质:其实就是取一个地址之后对其解引用

tips:其实引用相当于给一个变量取小名,一个人只能有一个大名,但是可以有无数个小名,而且这些小名也都是你,对这些小明实施的操作也是可以同步到你身上的。

【一】引用特性

1.引用在定义时必须要初始化

2.一个变量可以有多个引用

3.引用一旦引用一个实体,再也不能引用其他实体(和取小名类似,在你家族中给你叫了一个小名,那么这个小名仅仅属于你了)

 

 对这个引用重新指向一个实体的时候,其实相当于给这个引用赋值了

【二】引用的风险

上面我们说过,引用在底层是依靠指针实现的,那么指针有越界的风险,那么引用呢?

看以下代码及运行结果:

 为啥会出现这种结果呢?

函数的空间使用的是栈上的空间,当你函数运行结束时编译器会自动将这块空间回收,且覆盖。那么你的引用继续指向的还是这块位置,那么就会出现这种访问一堆莫名其妙的数字。

这个小时候就有聪明的小伙伴要问了,那么这个问题咋解决呢?

其实很简单的,使用static关键字即可,static关键字修饰的数据是存放在常量空间区域的,那么这个空间就不会随着函数调用而销毁,从而能很好的保存下来。

【三】const关键字和引用之间的火花

有的人说当使用const关键字修饰引用的时候到底是引用的对象不能修改,但是引用对象的数值不能修改?那就让我们试试看。

 

 从这行代码大家可以看出,使用const修饰之后,你会发现引用的对象不能修改了,引用本身也不能修改了,相当于这个引用对象变成了一个只读的权限。

tips:这里就涉及到一个c/c++部分一个很简单的问题,就是权限的放大缩小问题,使用const修饰之后相当于这个变量就成了仅可读的权限,但是在c/c++里面权限只能缩小且不能放大,你将这个变量赋给另外一个可以赋值的变量这显然是权限放大,显然是不允许的。

以上就是这期博客的全部内容,若有什么不对的地方欢迎大家位于评论区指正,若是觉得写的不错还请一键三连。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值