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