C++引用

变量名是什么

变量名用来标识一个存储空间(空间大小取决于将变量定义成的类型)。更通俗的说,变量名就是符号地址,在编译的过程中,编译器(编译器中有一个符号表,管理着符号与地址的映射)会将符号地址变成内存地址(这个内存地址是用机器码来表示的),所以符号地址不占空间。

引用是什么

假定已经定义了一个变量,那么引用就是给这个变量所标识的空间取了另外一个名字,即:这个空间有两个符号地址,所以引用是不占内存的。经常将引用比作常指针,只是引用的作用与常指针相似,但是常指针是占用内存的,即用了一块空间来保存另一个变量的地址,而这个常指针的名字,也是一个符号地址,用来标识这块空间。

引用的作用

引用被用作函数参数

引用经常被用作函数参数,使得函数中的变量名称为调用程序中的变量的别名,这种传递参数的方法称为按引用传递。按引用传递允许被调用的函数能够访问调用函数中的变量。众所周知,应在定义引用变量时对其进行初始化。函数调用使用实参初始化形参,因此函数的引用参数被初始化为函数调用传递的实参。

引用的属性和特别之处
  • 如果函数的形参不是常量引用参数(即:普通的引用参数),则在现代的C++中,实参必须是可修改的左值。可修改的左值,标识了一个可修改的内存空间(const 变量是不可修改的左值)。总的来说,左值是可以引用的数据对象,比如变量、数组元素、结构成员、引用和解除引用的指针;非左值包括字面常量(用引号括起来的字符串除外,他们由其地址表示)和包含多项的表达式。
  • 如果函数的形参是常量引用参数,则实参可以不是左值,只不过在函数中,会生成临时引用变量,使之称为按值传递,而无法之间访问调用函数的变量。这样的行为还发生在实参和形参的类型不匹配的情况下。
函数返回引用

传统返回机制与按值传递函数参数类似:计算关键字return 后面的表达式,并将结果返回给调用函数,从概念上说,这个值被复制到一个临时内存单元,而调用程序将使用这个值,这个临时内存单元可能很快就不存在了。返回值为引用时,将跳过将值放到临时内存单元这一步,而直接赋值给调用程序中接收被调函数返回值的比变量中。
注意:应避免返回函数终止时不在存在的内存单元的引用。

函数返回类型为const 引用

常规(非引用)返回类型是右值——不能通过地址访问的值。这是因为这种返回值位于临时内存单元中,运行到下一条语句时,它们可能不存在了。假如要使用引用返回值,但又不想修改它,那么可以将返回类型声明为const 引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值