C++引用(已定义变量的别名)

本文详细介绍了C++中的引用,包括其作为变量别名的特性、引用的初始化、引用作为函数参数、常引用的作用以及引用作为返回值的规则。引用在函数参数传递中能提高效率并确保安全性,同时在某些情况下可实现多态效果。引用不同于指针,它不占额外存储空间,且必须在声明时初始化。
摘要由CSDN通过智能技术生成

大纲

1.引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
2.常引用,让变量引用有只读属性。
3.引用作为返回值,返回的就是自己本身,可以当左值。(局部变量不可以做引用的返回值)

一、引用简介

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

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

int a; int &ra=a;   定义引用ra,它是变量a的引用,即别名

说明:
1.声明引用时,必须同时对其进行初始化。
2.声明一个引用,不是新定义了一个变量,本身不占存储单元,系统也不给引用分配存储单元。
3.不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。

二、引用应用

1、引用作为函数参数(不需要初始化)

函数:void swap(int &p1, int &p2)            //此处函数的形参p1, p2都是引用
调用:swap(a,b);                            //直接以变量a和b作为实参调用swap函数

(1)传递引用给函数与传递指针的效果是一样的。
  (2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;
  (3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的 形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。

2、常引用(让变量引用 只读属性)

常引用声明方式:const 类型标识符 &引用名=目标变量名;

用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。

int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确

3、引用作为返回值(返回的就是自己本身)

用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。

例:

#include <iostream.h>
float temp; //定义全局变量temp
float fn1(float r); //声明函数fn1
float &fn2(float r); //声明函数fn2
float fn1(float r) //定义函数fn1,它以返回值的方法返回函数值
{
   
 temp=(float)(r*r*3.14);
 return temp;
}
float &fn2(float r) //定义函数fn2,它以引用方式返回函数值
{
   
 temp=(float)(r*r*3.14);
 return temp;
}
void main() //主函数
{
   
 float a=fn1(10.0); //第1种情况,系统生成要返回值的副本(即临时变量)
 float &b=fn1(10.0); //第2种情况,可能会出错(不同 C++系统有不同规定)
 //不能从被调函数中返回一个临时变量或局部变量的引用
 float c=fn2(10.0); //第3种情况,系统不生成返回值的副本
 //可以从被调函数中返回一个全局变量的引用
 float &d=fn2(10.0); //第4种情况,系统不生成返回值的副本
 //可以从被调函数中返回一个全局变量的引用
 cout<<a<<c<<d;
}

引用作为返回值,必须遵守以下规则:

(1)不能返回局部变量的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值