void swap(int a, int b) { int temp = a; a = b; b = temp;}
时间: 2024-04-04 20:14:00 浏览: 35
这个交换函数是错误的,因为它只是交换了传入的参数 a 和 b 的值,而没有对调用它的函数产生任何影响。具体来说,当你在调用该函数时,传入的实参 a 和 b 的值会被复制到函数内部的形参 a 和 b 中,函数内部的操作只会改变形参 a 和 b,而不会改变实参 a 和 b。因此,这个函数是无效的。
如果要正确地交换两个变量的值,需要使用指针或者引用,可以参考我上面给出的代码。
相关问题
void swap(int *a,int *b) { int *temp; temp=a; a=b; b=temp; },这段代码能实现功能吗
### 回答1:
这段代码无法实现交换两个变量的值的功能,因为这里只是交换了指针变量a和b的值,而没有交换指针变量指向的内存地址中存储的值。应该改为如下代码:
```
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
这样就可以实现交换两个变量的值的功能了。
### 回答2:
这段代码不能实现交换两个整型指针所指向的值的功能。原因是在函数内部使用指针变量temp来保存指针a的值,然后将指针a的值改为指针b的值,再将指针b的值改为指针temp的值。但是在函数结束后,指针a和指针b指向的地址不会被改变,只是在函数内部进行了数值的交换,并没有实际影响到外部的指针a和指针b。
要实现交换两个指针所指向的值,可以使用如下代码:
void swap(int **a, int **b) {
int *temp;
temp = *a;
*a = *b;
*b = temp;
}
这样,在函数内部使用双重指针可以修改外部的指针a和指针b,达到交换指针所指向的值的目的。
### 回答3:
这段代码无法实现功能。原因是在C++中,传递指针参数时,只会传递指针的副本,形参指针的赋值并不会改变实参指针的值。所以在swap函数内部,a和b的交换并不会影响到调用函数时传入的实参指针。
为了实现交换两个指针的值,可以使用引用来传递指针参数。修改代码如下:
void swap(int* &a, int* &b) {
int* temp = a;
a = b;
b = temp;
}
使用引用来传递指针参数时,调用函数时传入的实参指针的地址会被传递给形参。这样,在swap函数内部修改形参指针的值时,也会改变实参指针的值,实现了指针的交换。
void swap(int\\\\& a, int\\\\& b) { int temp; temp = a; a = b; b = temp; }
这是一个交换两个整数变量值的函数,使用的是引用传参的方式。函数的定义如下:
```c++
void swap(int& a, int& b) {
int temp;
temp = a;
a = b;
b = temp;
}
```
其中,`int& a`和`int& b`表示传入的参数是整型变量的引用,即在函数内部对a和b的修改将会影响到函数外部实参的值。`temp`是一个临时变量,用来交换a和b的值。函数执行完毕后,a和b的值发生了交换。