void swap(int a,int b){int t = a;a=b;b=t} 为什么不能交换两个数的值
时间: 2023-06-13 21:02:37 浏览: 76
这个函数定义的参数a和b是按值传递的,也就是说,在函数内部改变a和b的值并不会影响函数外部a和b的值。因此,这个函数不能实现交换两个数的值的功能。
要实现交换两个数的值,可以使用指针或者引用。例如:
1. 使用指针:
```
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
```
在调用这个函数时,传入两个数的地址即可:
```
int x = 1, y = 2;
swap(&x, &y);
// 现在 x 的值是 2,y 的值是 1
```
2. 使用引用:
```
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
```
在调用这个函数时,直接传入两个数即可:
```
int x = 1, y = 2;
swap(x, y);
// 现在 x 的值是 2,y 的值是 1
```
这两种方式都是可以实现交换两个数的值的。
相关问题
void swap(int a, int b) { int temp = a; a = b; b = temp;}
这个交换函数是错误的,因为它只是交换了传入的参数 a 和 b 的值,而没有对调用它的函数产生任何影响。具体来说,当你在调用该函数时,传入的实参 a 和 b 的值会被复制到函数内部的形参 a 和 b 中,函数内部的操作只会改变形参 a 和 b,而不会改变实参 a 和 b。因此,这个函数是无效的。
如果要正确地交换两个变量的值,需要使用指针或者引用,可以参考我上面给出的代码。
函数接口定义: void swap(int a,int b,int *c);
这个函数的接口定义有三个参数:a, b, c。其中 a 和 b 是两个要交换值的整数,c 是一个指针,指向一个整数类型的变量。
函数的作用是将 a 和 b 的值交换,并将交换前 a 的值赋给 c 所指向的变量。具体实现可以是:
```
void swap(int a, int b, int *c) {
int temp = a;
a = b;
b = temp;
*c = temp;
}
```