函数参数传递模板
值传递、引用传递、指针传递——理解参数如何传入函数
参数传递
值传递
引用传递
指针
GESP4
#include <bits/stdc++.h>
using namespace std;
// 值传递:复制一份,不影响原变量
void byValue(int x) { x = 100; }
// 引用传递:直接操作原变量
void byRef(int &x) { x = 100; }
// 指针传递:通过地址操作原变量
void byPtr(int *x) { *x = 100; }
// const 引用:避免复制,但不允许修改
void printArr(const vector<int> &v) {
for (int x : v) cout << x << " ";
cout << endl;
}
// 数组参数(退化为指针)
void printArr(int arr[], int n) {
for (int i = 0; i < n; i++) cout << arr[i] << " ";
cout << endl;
}
int main() {
int a = 5;
byValue(a); cout << a << endl; // 5(没变)
byRef(a); cout << a << endl; // 100(变了)
a = 5;
byPtr(&a); cout << a << endl; // 100(变了)
vector<int> v = {1, 2, 3};
printArr(v); // 1 2 3
int arr[] = {10, 20, 30};
printArr(arr, 3);
return 0;
}
📖 要点说明
- 值传递:复制参数,函数内修改不影响原变量
- 引用传递
&:直接操作原变量,高效 const &:避免复制且防误改,传大对象时必用- 数组传参退化为指针,需额外传长度
⚠️ 常见错误
- 值传递期望修改原变量但没变
- 引用参数忘写
& - 数组参数忘传长度 n