按值传递和按引用传递是两种不同的参数传递方式。在按值传递中,函数参数会被复制一份,并且函数内部的操作只会影响参数的副本,不会影响原始参数。而在按引用传递中,函数参数只是原始参数的一个引用,函数内部的操作会直接影响原始参数。
下面是按值传递和按引用传递的代码示例:
按值传递示例:
#include
void increment(int x) {
x++;
std::cout << "Inside increment function: " << x << std::endl;
}
int main() {
int num = 5;
std::cout << "Before increment function: " << num << std::endl;
increment(num);
std::cout << "After increment function: " << num << std::endl;
return 0;
}
输出:
Before increment function: 5
Inside increment function: 6
After increment function: 5
在这个示例中,函数increment接收一个int类型的参数x。在main函数中调用increment函数时,传递了num的值作为参数。在increment函数内部,x的值被增加了1,但这个增加只影响了x的副本,不会影响原始的num变量。
按引用传递示例:
#include
void increment(int& x) {
x++;
std::cout << "Inside increment function: " << x << std::endl;
}
int main() {
int num = 5;
std::cout << "Before increment function: " << num << std::endl;
increment(num);
std::cout << "After increment function: " << num << std::endl;
return 0;
}
输出:
Before increment function: 5
Inside increment function: 6
After increment function: 6
在这个示例中,函数increment接收一个int类型的引用参数x。在main函数中调用increment函数时,传递了num变量的引用作为参数。在increment函数内部,x的值被增加了1,由于x是num的引用,所以这个增加会直接影响原始的num变量。
总结:按值传递会复制参数的值,而按引用传递会直接使用参数的引用,从而可以直接修改原始参数的值。选择使用哪种传递方式取决于具体的需求和情况。
上一篇:按值查找文档,不使用其引用