//交换函数 #include <iostream> using namespace std; void swap2(int a,int b); //传值的形式 void swap3(int *px,int *py); //传指针的形式 #define SWAP4(x,y,t) ((t)=(x),(x)=(y),(y)=(t)) //定义宏函数 全部用括号扩起来 //前面几种都是C语言中使用的 void swap5(int &x,int &y); //传引用 int main() { int a,b,tmp; a = 1; b = 10; cout <<"初始值为:"<< "a = "<<a<<",b="<<b<<endl; tmp = a; //把a放入tmp中 a = b; //把b放入a中 b = tmp; //把tmp放入b中 cout <<"主函数内交换后:"<< "a = "<<a<<",b="<<b<<endl; swap2(a,b); //此时是值传递,把a b,拷贝后传给了行参,不能用 cout << "swap2以后:"<<"a = "<<a<<",b="<<b<<endl; //指针饮用 swap3(&a,&b); //指针是地址,要用&取址,拷贝的是原来地址,操作地址的时候,变更的就是原来的数据 cout <<"swap3以后:"<< "a = "<<a<<",b="<<b<<endl; //使用宏定义 cout <<"使用宏定义函数:"; SWAP4(a,b,tmp); cout << "a = "<<a<<",b="<<b<<endl; //使用引用,只有C++能使用引用 swap5(a,b); cout <<"使用引用后:"<< "a = "<<a<<",b="<<b<<endl; //使用模版中的模版函数 template <class T> void swap(T& x, T& y) cout<<""; std::swap(a,b); cout <<"使用std::swap函数:"<< "a = "<<a<<",b="<<b<<endl; return 0; } void swap2(int a, int b){ int temp; temp = a; a = b; b = a; } void swap3(int *px,int *py){ int tmp; tmp = *px; *px = *py; *py = tmp; } void swap5(int &rx,int &ry){ //引用就是别名,要特别重视 int tmp; tmp = rx; rx = ry; ry = tmp; }
输出结果:
初始值为:a = 1,b=10
主函数内交换后:a = 10,b=1
swap2以后:a = 10,b=1
swap3以后:a = 1,b=10
使用宏定义函数:a = 10,b=1
使用引用后:a = 1,b=10
使用std::swap函数:a = 10,b=1