void swap(int &x, int &y) { int t = x; // 将 x 的值存储到临时变量 t 中 x = y; // 将 y 的值赋给 x y = t; // 将 t 的值赋给 y,即将 x 的值赋给 y}为什么要有&
时间: 2024-03-25 12:35:42 浏览: 18
在函数中,将变量作为参数传递给函数时,会将变量的值复制一份给函数内部的形参,而不是直接使用原变量。这样,如果在函数内部修改了参数的值,实际上只是修改了形参的值,而不会影响原变量的值。
为了避免这种情况,可以使用引用来传递参数,引用是一个指向变量的指针,通过引用可以直接访问原变量的值,并且在函数内部修改引用所指向的变量的值时,可以直接影响原变量的值。
在这个 swap 函数中,使用了 & 符号来声明形参 x 和 y 是引用类型,这样在调用 swap 函数时,可以直接传递变量的名称作为参数,而不需要传递变量的地址。
具体来说,如果没有使用 & 符号,函数可以这样定义:
```
void swap(int x, int y) {
int t = x; // 将 x 的值存储到临时变量 t 中
x = y; // 将 y 的值赋给 x
y = t; // 将 t 的值赋给 y,即将 x 的值赋给 y
}
```
这样,在调用 swap 函数时,需要传递变量的值或指针,而不是变量的名称。这样就无法直接访问原变量的值,也无法直接修改原变量的值,因此需要使用 & 符号来声明形参是引用类型,从而直接访问原变量的值。
相关问题
void swap(int &x, int &y) { int t = x; // 将 x 的值存储到临时变量 t 中 x = y; // 将 y 的值赋给 x y = t; // 将 t 的值赋给 y,即将 x 的值赋给 y}用到指针了吗
在这个 swap 函数的实现中,并没有用到指针。它是通过引用的方式来实现变量值的交换,引用是一种更加安全和简便的方式,可以避免指针所带来的一些问题,如空指针的访问等。如果使用指针来实现变量值的交换,可以写成下面这样:
```
void swap(int *x, int *y) {
int t = *x; // 将 x 指向的变量的值存储到临时变量 t 中
*x = *y; // 将 y 指向的变量的值赋给 x 指向的变量
*y = t; // 将 t 的值赋给 y 指向的变量,即将 x 指向的变量的值赋给 y 指向的变量
}
```
在调用 swap 函数时,需要将变量的地址作为参数传递给 swap 函数,从而实现变量值的交换。具体代码如下:
```
int a = 1, b = 2;
swap(&a, &b);
```
这样,变量 a 和 b 的值就会被交换。但是需要注意的是,在使用指针时需要特别小心,避免出现空指针访问等错误。
void swap(int &x,int &y){ int t = x; x = y; y = t; }为什么函数定义要加&
这是因为“&”符号表示取地址符,它可以用于定义引用类型。
在函数定义中,参数前面加上“&”符号表示这是一个引用类型的参数,也就是说,这个参数实际上是传入的变量的地址。在函数内部修改这个参数的值时,实际上是修改了这个变量的值。
在这个具体的函数中,加上“&”符号的作用是让参数 x 和 y 成为引用类型的参数,这样函数内部对参数的修改会直接影响到传入的变量。
如果不加“&”符号,这两个参数就会成为传值类型的参数,函数内部对它们的修改不会影响到传入的变量。