C++引用&概念及用法

一.概念

引用是变量的别名,对引用的操作与对变量的操作完全一样。引用符号&与C语言中取地址符号一样,含义不同。

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

例如:

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


二.引用实例

1.引用作为函数参数


void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用
{ 
	int p; 
	p=p1;
	p1=p2;
	p2=p; 
}

//为在程序中调用该函数,则相应的主调函数的调用点处,直接以变量作为实参进行调用即可,而不需要实参变量有任何的特殊要求。如:对应上面定义的swap函数,相应的主调函数可写为:

int main(void)
{
	int a=13,b=56;
	swap(a,b); //直接以变量a和b作为实参调用swap函数
	cout<<a<< ' ' <<b; //输出结果
	return 0;
}

使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给 形参分配存储单元,形参变量是实参变量的副本;


2.常引用


例如:

int main(void)
{
	int a;
	const int &ra = a;
	//ra = 1;//错误  ra被const修饰不能修改
	a = 1;
	printf("%d %d\n",a,ra);
}

3.引用作为返回值


#include <iostream>
using namespace std;

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)以引用返回函数值,定义函数时需要在函数名前加&。

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


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值