请说明 Call by reference, Call by value的区别
时间: 2023-11-28 14:51:17 浏览: 61
详解Java的call by value和call by reference
在编程中,函数参数传递的方式可以分为 Call by reference 和 Call by value 两种方式。
Call by value 是指将实际参数的值复制给形式参数,函数内部对形式参数进行修改不会影响到实际参数的值。也就是说,这种方式传递参数是值传递,函数对参数的修改不会影响到原来的变量。
而 Call by reference 是指将实际参数的地址传递给形式参数,函数内部对形式参数进行修改会影响到实际参数的值。也就是说,这种方式传递参数是引用传递,函数对参数的修改会影响到原来的变量。
举个例子,假设有一个函数 swap,作用是交换两个数的值:
```
void swap(int a, int b) // Call by value
{
int temp = a;
a = b;
b = temp;
}
void swap(int& a, int& b) // Call by reference
{
int temp = a;
a = b;
b = temp;
}
```
如果采用 Call by value 方式调用 swap 函数,实际参数的值不会被改变:
```
int x = 1, y = 2;
swap(x, y); // x = 1, y = 2
```
而如果采用 Call by reference 方式调用 swap 函数,实际参数的值会被改变:
```
int x = 1, y = 2;
swap(x, y); // x = 2, y = 1
```
总之,Call by value 和 Call by reference 的区别在于函数内部对参数的修改是否会影响到实际参数的值。
阅读全文