c++函数传值和传引用的区别
时间: 2023-08-10 07:00:27 浏览: 59
在C++中,函数参数传值(pass by value)和函数参数传引用(pass by reference)是两种不同的参数传递方式,它们有以下区别:
1. 传值:函数参数按值传递时,实参的值被复制到形参中。在函数内部对形参的修改不会影响实参的值。
例如:
```cpp
void passByValue(int x) {
x = 10;
}
int main() {
int num = 5;
passByValue(num);
cout << num; // 输出 5,实参的值未改变
return 0;
}
```
2. 传引用:函数参数按引用传递时,形参是实参的别名,对形参的修改会直接影响实参的值。
例如:
```cpp
void passByReference(int& x) {
x = 10;
}
int main() {
int num = 5;
passByReference(num);
cout << num; // 输出 10,实参的值被修改
return 0;
}
```
3. 传值的优点是简单、直观,适用于不希望修改实参的情况。而传引用可以避免复制大型对象的开销,同时允许在函数内部修改实参的值。
4. 使用传值方式时,函数内部对形参的修改不会影响实参。而使用传引用方式时,函数内部对形参的修改会直接影响实参。因此,在需要修改实参的值时,传引用是更合适的选择。
需要注意的是,对于引用传递,函数的参数类型必须和实参类型匹配,否则会导致编译错误。此外,传引用也可以避免一些不必要的拷贝操作,提高程序的效率。