引用&指针交换函数实践

实践如下:

#include <iostream>

using namespace std;

// 普通交换,注意这里的ab值,在具体调用时是基本数据的拷贝,原始数据不会变化
// 因此这里交换后的值是不会变化的
void swap(int a, int b){
    int tmp  = a;
    a = b;
    b = tmp;
}

// 引用交换, 参数和原始数据指向同一个地方,也可以理解为一种指针
void refSwap(int &a, int &b){
    // 需要定义tmp存放临时变量的值
    int tmp = a;
    a = b;
    b = tmp;
}

// 指针交换, 参数和原始数据指向同一个地方
void pointSwap(int *a, int *b){
    // 需要定义tmp存放临时变量的值
    int tmp = *a;
    // 指针指向地址值的调换
    *a = *b;
    *b = tmp;
}

int main(){

    cout << "引用&指针交换函数实践:" << endl;
    int a = 11;
    int b = 22;
    cout << "临时变量交换:"<< endl;
    swap(a, b);
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;

    cout << "传引用交换:"<< endl;
    // 注意: 调用传引用时,只要传递普通常量就可以
    // 这里可以结合函数参数, &a = a, 所以这里只需要写a
    refSwap(a, b);
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;


    cout << "指针交换:"<< endl;
    // 注意: 调用指针用时,需要加&
    // 这里可以结合函数参数, *a = &a, 所以这里需要写&取地址
    pointSwap(&a, &b);
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;

    cout << "end." << endl;
    return 0;
}

输出如下:

猜你喜欢

转载自www.cnblogs.com/do-your-best/p/11141644.html