C++自定义swap函数实现交换两个变量的值兼谈参数传递

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;
    //调用 交换函数swap
    swap(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;
    //调用 交换函数swap
    swap(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;
    //调用 交换函数swap
    swap(&a, &b); //当使用指针作为参数时,需要使用取地址运算符 & 获取变量的地址。
    cout << "交换后: a = " << a << ", b = " << b << endl;
    
    return 0;
}

关于C++参数传递更多情况可见https://blog.csdn.net/cnds123/article/details/119272530

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/132914674