在 C++ 中,引用参数 和实参是函数调用过程中两个密切相关但本质不同的概念,核心区别如下:
1. 定义与本质
- 实参(Actual Argument) :调用函数时传递给函数的原始数据(变量、常量或表达式),是函数实际操作的对象。
- 引用参数(Reference Parameter) :函数定义时用
&声明的参数,是实参的 **"别名"**(即另一个名字),与实参共享同一块内存。
2. 核心区别对比
| 维度 | 实参 | 引用参数 |
|---|---|---|
| 内存关系 | 拥有独立内存地址 | 不分配新内存,与实参共用地址 |
| 修改影响 | 值传递时修改不影响原实参 | 修改会直接改变原实参的值 |
| 传递开销 | 值传递时需拷贝数据(大对象慢) | 无拷贝,直接绑定(效率高) |
#include <iostream>
using namespace std;
// 引用参数:x 是实参的别名
void changeValue(int &x) {
x = 100; // 修改 x 等于修改原实参
}
int main() {
int a = 10; // a 是实参
changeValue(a); // 传递 a,x 绑定到 a
cout << a; // 输出:100(原实参被修改)
return 0;
}
4. 使用场景
- 引用参数 :用于需要修改实参 或避免大对象拷贝(如类、数组)的场景。
- 实参:是函数调用的 "输入数据",可以是变量、常量或表达式。
简单来说:实参是 "原始数据",引用参数是 "原始数据的别名"------ 改别名就是改原始数据。