引用传递是C++中通过别名修改实参并避免拷贝开销的技术,使用&声明参数,适用于修改变量值和传递大对象。
在C++中,使用引用传递参数是一种高效且常用的方式,能够避免复制大对象带来的开销,同时允许函数修改实参的值。与指针不同,引用更安全、语法更简洁。
什么是引用传递
引用是变量的别名,一旦初始化后就绑定到某个变量上。在函数参数中使用引用,意味着传入的是实参本身,而不是它的副本。
声明方式是在参数类型后加&符号:
void func(int &ref) { ref = 100; // 修改的是原变量 }
调用时直接传变量名,无需取地址:
立即学习“C++免费学习笔记(深入)”;
int x = 10; func(x); // x 的值变为 100
引用传递的使用场景
引用常用于以下几种情况:
- 修改实参值:函数需要改变传入变量的内容,例如交换两个数:
void swap(int &a, int &b) { int temp = a; a = b; b = temp; }
- 提高性能:避免传递大型对象(如类、结构体)时的拷贝开销:
void printVector(const std::vector
- 返回多个值:通过引用参数“带回”多个结果:
void getMinMax(int a, int b, int c, int &min, int &max) { min = std::min({a, b, c}); max = std::max({a, b, c}); }
const引用的优势
如果函数不需要修改参数,建议使用const引用,既能避免拷贝,又能防止误改数据:
void display(const std::string &str) { std::cout
const引用还能绑定临时对象或字面量,普通引用则不能。
引用 vs 指针传参
相比指针,引用更直观、不易出错:
- 引用必须初始化,不能为null
- 语法更简洁,调用时看不出区别
- 不会发生指针运算等意外操作
但指针更适合可选参数(可以传nullptr),而引用通常表示“必须提供有效对象”。
基本上就这些。合理使用引用传递,能让代码更高效、清晰。注意区分是否需要修改参数,选择普通引用还是const引用。