C++——引用

引用

引用是已存在变量的别名,定义引用的一般格式为:
类型标识符 &引用变量名 = 变量名;
&是引用运算符,在定义时必须用已经存在的变量对其初始化,引用类型与它所引用的变量类型相同。一个引用定义后,对引用的操作等价于对它所引用的变量的操作。

int a;
int &ref = a;
ref = 10;	//等价于a = 10

系统并不为引用分配内存空间,引用和它所引用的变量使用同一内存空间。
引用的主要作用是作为函数参数和函数的返回值。如果在定义时用const修饰,则定义的是常引用,并且常引用的值不允许修改。

int a = 10;
const int &ref = a;	
ref = 5;				//ERROR:ref为常引用,不允许被修改
a = 5;					//通过a本身修改自己的值是可以的

常引用作为函数参数时说明该引用的值不允许在函数内修改
下面是一个常见的swap()函数,其中就用到了引用。

#include <iostream>
using namespace std;

void swap1(int a, int b)
{
	a = a + b;
	b = a - b;
	a = a - b;
}

void swap2(int &a, int &b)
{
	a = a + b;
	b = a - b;
	a = a - b;
}

int main()
{
	int x = 10, y = 20;
	cout << "交换前:";
	cout << "x = " << x << ",y=" << y << endl;
	swap1(x, y);
	cout << "交换后:";
	cout << "x = " << x << ",y=" << y << endl;

	cout << "交换前:";
	cout << "x = " << x << ",y=" << y << endl;
	swap2(x, y);
	cout << "交换后:";
	cout << "x = " << x << ",y=" << y << endl;
	return 0;
}

在这里插入图片描述
swap1()原因是x和y在函数swap()1内为按值传递,按值传递时,函数不会访问当前调用的实参。函数处理的值是它本地的拷贝,这些拷贝被存储在运行栈中,因此改变这些值不会影响实参的值。一旦函数结束了,函数的活动记录将从栈中弹出,这些局部值也就消失了。
而在swap2()中,用了&运算符,则a和b是实参x和y的别名,交换的是本身的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值