C++---引用与指针

引用

引用概念:变量的别名,操作引用,就是在直接操作引用对象
就像我们每个人有自己的本名也有自己的小名一样,引用就是变量的别名。

  • 在语法层面:他就是变量的一个别名,没有独立空间,和其引用实体共用一个内存空间

写法:实体类型 & 引用名称=实体对象
在这里插入图片描述引用的分类:可读可写的引用和常引用
常引用:引用指向的实体不能被修改。
引用的特性

  • 引用于实例对象的类型要相同
  • 引用必须初始化
  • 一个引用只能有一个实例对象,一个实例对象可有多个引用

引用的应用场景:

  • 做参数
    在这里插入图片描述 - 做返回值
    注意:返回值一定要大于函数本身的声明周期
    在这里插入图片描述
    在这段代码中c是一个局部变量,MyAdd()执行完之后c就被释放了,再执行点别的代码,c的这个地址会有别的变量来占有,result也就成为了别的变量。
    引用的优点:在作为返回值、参数时,引用相比于传值效率非常高,因为传值要发生拷贝,而引用就是变量本身。

引用与指针的区别

为什么要将引用和指针来比较呢?引用使用起来和指针有很大区别,而且比指针简单。
这是因为引用在编译器底层实现层面是用指针来实现的。
引用是有自己的空间的,且就是变量的一个指针。在使用时编译器自动帮我们解引用所以就像在操作变量本身一样。我的理解是在编译器底层实现的层面 ra就相当于*pa
在这里插入图片描述

但是在语法层面是由很多区别的

  1. 引用在定义时必须初始化,而指针没有要求
  2. 引用在初始化一个实体之后,就不能引用其他实体,指针可以改变指向
  3. 没有NULL引用,但有NULL指针
  4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)
  5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
  6. 有多级指针,但是没有多级引用
  7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
  8. 引用比指针使用起来相对更安全
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值