📅  最后修改于: 2023-12-03 15:13:53.753000             🧑  作者: Mango
在 C++ 中,函数可以通过值调用和引用调用两种方式进行参数传递。
值调用是指将参数的值复制一份,然后传递给函数。在函数内部对参数的修改不会影响到函数外部的变量。例如:
#include <iostream>
using namespace std;
void square(int num) {
num = num * num;
cout << "The square of " << num << " is " << num << endl;
}
int main() {
int num = 5;
square(num);
cout << "The value of " << num << " is " << num << endl;
return 0;
}
上述代码将输出:
The square of 25 is 25
The value of 5 is 5
可以看到,在函数 square
中将参数 num
的值平方,但在函数外部得到的 num
的值并没有发生变化。这是因为在值调用时,函数会对传入的值进行拷贝,而这个拷贝与原来的变量是独立的。
引用调用是指将变量作为参数传递给函数,函数内部使用的是这个变量的引用,也就是这个变量的别名。在函数内部对参数的修改会反映到函数外部的变量上。例如:
#include <iostream>
using namespace std;
void square(int& num) {
num = num * num;
cout << "The square of " << num << " is " << num << endl;
}
int main() {
int num = 5;
square(num);
cout << "The value of " << num << " is " << num << endl;
return 0;
}
上述代码将输出:
The square of 25 is 25
The value of 25 is 25
可以看到,在函数 square
中将参数 num
的值平方,同时也修改了函数外部的变量 num
的值。这是因为在引用调用时,函数使用了变量的引用,对函数内部的变量的改变会直接影响到函数外部的变量。
值调用和引用调用在参数传递上有明显的区别,其主要表现在以下几个方面:
因此,在选择参数传递方式时需要根据具体情况进行权衡和选择。一般来说,如果函数需要对参数进行修改或者参数比较大时,建议使用引用调用。如果函数仅仅需要使用参数的值或者参数比较小,可以使用值调用。