请详细减少c++传值,传引用,传常引用,传指针,讲讲他们的区别与应用场景并举出例子
时间: 2024-04-21 21:22:05 浏览: 112
C++中有多种方式可以传递参数,包括传值、传引用、传常引用和传指针。它们之间有一些区别和适用场景。
1. 传值(pass by value):将参数的副本传递给函数。在函数内对参数的修改不会影响到原始值。
```cpp
void func(int num) {
num = 10; // 对参数进行修改
}
int main() {
int num = 5;
func(num); // 传值调用
cout << num; // 输出原始值5
return 0;
}
```
传值适用于需要在函数内部进行修改,但不希望影响到原始值的情况。
2. 传引用(pass by reference):通过引用传递参数,函数内对参数的修改会直接影响到原始值。
```cpp
void func(int &num) {
num = 10; // 对参数进行修改
}
int main() {
int num = 5;
func(num); // 传引用调用
cout << num; // 输出修改后的值10
return 0;
}
```
传引用适用于需要在函数内部修改参数,并且希望这些修改对原始值产生影响的情况。
3. 传常引用(pass by const reference):通过常引用传递参数,函数内不能对参数进行修改。
```cpp
void func(const int &num) {
// num = 10; // 错误,不能修改常引用参数
}
int main() {
int num = 5;
func(num); // 传常引用调用
cout << num; // 输出原始值5
return 0;
}
```
传常引用适用于需要在函数内部对参数进行只读操作,不希望对原始值产生任何修改的情况。
4. 传指针(pass by pointer):通过指针传递参数,可以在函数内对参数进行修改,并且可以传递空指针。
```cpp
void func(int *ptr) {
*ptr = 10; // 对参数进行修改
}
int main() {
int num = 5;
func(&num); // 传指针调用
cout << num; // 输出修改后的值10
return 0;
}
```
传指针适用于需要在函数内部对参数进行修改,并且可能需要传递空值的情况。
总结:
- 传值:适用于不需要对原始值产生影响的情况。
- 传引用:适用于需要在函数内部对参数进行修改,并且希望这些修改对原始值产生影响的情况。
- 传常引用:适用于需要在函数内部对参数进行只读操作,不希望对原始值产生任何修改的情况。
- 传指针:适用于需要在函数内部对参数进行修改,并且可能需要传递空值的情况。
阅读全文