C++自定义swap函数实现交换两个变量的值兼谈参数传递
在C++中,交换两个变量的值可以通过多种方法实现。常见的是使用临时变量,源码如下:
在上面的代码中,我们首先定义了两个变量a和b,并使用cout语句输出了它们的初始值。然后,我们使用一个临时变量temp来存储a的值,将b的值赋给a,再将temp的值赋给b,这样就完成了a和b的交换。
#include <iostream>
using namespace std;int main() {
int a = 10, b = 20;
cout << "交换前: a = " << a << ", b = " << b << endl;// 交换a和b的值int temp = a;a = b;b = temp;cout << "交换后: a = " << a << ", b = " << b << endl;return 0;
}
下面我们还是使用临时变量这种算法,但采用自定义函数swap实现。
请注意,如下的代码不能交换两个变量的值:
#include <iostream>
using namespace std;//自定义交换函数swap
void swap(int a, int b) {int temp = a;a = b;b = temp;
}int main() {int a = 10, b = 20; cout << "交换前: a = " << a << ", b = " << b << endl;//调用 交换函数swapswap(a, b); cout << "交换后: a = " << a << ", b = " << b << endl;return 0;
}
这个程序不能交换两个变量的值,这是因为,在C++中,变量在传递到函数时默认是按值传递的。这意味着函数内部操作的只是参数的副本,而不是原始变量。因此,当你在swap函数内部交换两个变量时,只是交换了这两个变量的副本,而原始的a和b并没有改变。
如果你想要函数交换两个变量的值,你需要使用引用参数或指针变量参数。
先看,使用引用参数来自定义交换函数swap,源码如下:
#include <iostream>
using namespace std;//自定义交换函数swap ,使用引用参数来传递变量的地址
void swap(int &a, int &b) { int temp = a; a = b; b = temp;
}int main() {int a = 10, b = 20; cout << "交换前: a = " << a << ", b = " << b << endl;//调用 交换函数swapswap(a, b); cout << "交换后: a = " << a << ", b = " << b << endl;return 0;
}
再看,使用指针参数来自定义交换函数swap,源码如下:
#include <iostream>
using namespace std;//自定义交换函数swap ,使用指针作参数来传递变量的地址
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int main() {int a = 10, b = 20; cout << "交换前: a = " << a << ", b = " << b << endl;//调用 交换函数swapswap(&a, &b); //当使用指针作为参数时,需要使用取地址运算符 & 获取变量的地址。cout << "交换后: a = " << a << ", b = " << b << endl;return 0;
}
关于C++参数传递更多情况可见https://blog.csdn.net/cnds123/article/details/119272530