C++ 引用调用
向函数传递参数的引用调用方法,把引用的地址复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
按引用传递值,参数引用被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为引用类型,该函数用于交换参数所指向的两个整数变量的值。
// 函数定义 void swap(int &x, int &y) { int temp; temp = x; /* 保存地址 x 的值 */ x = y; /* 把 y 赋值给 x */ y = temp; /* 把 x 赋值给 y */ return; }
现在,让我们通过引用传值来调用函数 swap():
实例
#include <iostream>
using namespace std;
// 函数声明
void swap(int &x, int &y);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值 */
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
// 函数定义
void swap(int &x, int &y)
{
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
当上面的代码被编译和执行时,它会产生下列结果:
交换前,a 的值: 100 交换前,b 的值: 200 交换后,a 的值: 200 交换后,b 的值: 100
关键点
- 引用定义:通过使用
&
符号来定义引用类型,例如int &ref
。 - 传递引用:在函数参数列表中使用引用类型,这样函数内部的修改会影响到实际传递的变量。
- 避免拷贝开销:引用传递避免了传递大对象时的拷贝开销,提高了效率。
引用调用的应用场景
- 修改外部变量:如上例所示,通过函数修改传入的变量。
- 减少开销:特别是在传递大对象或复杂数据结构时,引用传递可以避免不必要的拷贝操作。
- 返回值优化:通过引用返回函数的局部变量,避免了返回值拷贝的开销。
引用调用是C++中的一种重要技术,可以提高代码的效率和灵活性。了解和熟练使用引用调用对于编写高效的C++程序非常有帮助。