大家好:
衷心希望各位点赞。
您的问题请留在评论区,我会及时回答。
一、引用传递
简单来说,“引用”就是给已有的变量起一个别名。引用并没有自己单独的内存空间,作为引用,它和原变量共用一段内存空间。引用的定义格式如下:
类型 &引用名 = 已有的变量名;
例如:
int a = 10;
int& b = a;
先定义了一个变量 a ,然后又定义了一个引用 b ,通过赋值语句使 b 是变量 a 的别名。此时,引用 b 与变量 a 在内存中占用同一快内存空间。
定义引用的同时必须对其进行初始化,也就是必须指定该引用是哪个变量的别名,而且一旦初始化,引用就不能再是其他变量的别名。引用的使用和一般变量的使用是一样的,它只是变量的一个别名。
二、应用
在定义函数时,如果形参被定义为引用,那么调用函数时,实参必须是变量,不能是字面值常量,此时形参就是实参的别名。引用传递的特点是:
1、形参是实参的别名,形参和实参共用同一块内存空间。
2、对形参的修改也就是对实参的修改,二者相互影响,实现了双向传递。
常见应用:按照引用传递的方式交换两个变量的值。程序如下:
#include <iostream>
#include <Windows.h>
#include <string>using namespace std;void swap(int& x, int& y);//将形参定义为引用int main() {int a = 1;int b = 2;cout << "a = " << a << endl;//输出a = 1cout << "b = " << b << endl;//输出b = 2cout << "-----引用传递-----" << endl;swap(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0;
}void swap(int& x, int& y) {int temp;temp = x;x = y;y = temp;
}
程序运行的结果,如图所示:
调用 swap() 函数交换两个引用 x , y 的值以后,实参变量 a 和 b 的值也交换了。这是因为,引用x , y 是实参变量 a ,b 的别名,a 和 x 共用同一块内存空间,b 和 y 共用同一块内存空间。