c++引用详解

 我来答
科创17
2022-08-29 · TA获得超过5892个赞
知道小有建树答主
回答量:2846
采纳率:100%
帮助的人:173万
展开全部

铺垫:

变量名实质上是一段连续存储空间的别名,是一个标号

程序中通过变量来申请并命名内存空间

通过变量的名字可以使用存储空间

(能不能再名字的基础上在起个名字?)

概念:

1) 可以看做一个已定义变量的别名

引用是c++的语法范畴,不能再用c语言的思想去思考问题(间接修改)

属于c++编译器对c的扩展


引用做函数参数

引用的意义

引用作为其他指针变量的别名而存在,因此在一些场合可以替代指针

引用相对于指针来说具有更好的可读性和实用性

引用的本质

c++编译器背后做了什么工作

单独定义的时候必须初始化--->很像常量

1)引用在c++内部实现是一个常指针

2)c++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占的空间与指针相同

3)从使用的角度,引用会让人误会其只是一个别名,没有自己的储存空间,这是c++为了实用性做出的细节隐藏.

结论 :当我们使用引用的语法时,我们不用去关心编译器引用是怎么做了

当我们分析奇怪的语法现象时,才去考虑编译器是怎么做的

函数返回值是引用(引用当左值)

c++引用使用时的难点:

当函数返回值为引用时,

若返回栈变量 ,不能成为其他引用的初始值,不能作为左值使用

若返回静态变量或全局变量 可以成为其他引用的初始值.

即可作为右值使用,也可作为左值使用

指针的引用

c++中的const常量

可能分配内存空间,也可能不分配

当const常量为全局,并且需要在其他文件中使用,会分配空间

在使用&操作符,取const常量的地址,会分配

当const修饰引用,会分配

结论:

const &int e==const int* const e

普通引用==int const e

当使用常量对const引用进行初始化时,编译器会为常量值分配空间,并用引用名作为这段空间的别名

使用字面量对const引用初始化后,将生成一个只读变量

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式