实践如下:
#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; }
输出如下: