C++ 中两个数据交换总结

// 数据交换.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;

//采取引用方式
template< typename T>
void EXchange(T & a,T & b)
{
  T c;
  c = a;
  a = b;
  b = c;

}


//采取指针方式(通过指针访问变量)
template< typename T>
void EXchange1(T *p,T *q)
{
   T c;
     c = * p;
   * p = * q;
   * q = c;

}

//采用亦或方式
template < typename T>
void EXchange2(T &a,T &b)
{
a = a ^ b;
        b = a ^ b;
a = a ^ b;
}
//采用标准运算
template < typename T>
void EXchange3(T & a,T & b)
{
        a = a + b;
b = a - b;
a = a - b;
}
//二级指针运算
template < typename T>
void EXchange4(T **m,T **n)
{
T c;
 c = ** m;
**m = ** n;
**n =  c;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=5,b=6;
EXchange(a,b);
cout<<"a="<<a<<";"<<"b="<<b<<endl;
EXchange1(&a,&b);
cout<<"a="<<a<<";"<<"b="<<b<<endl;
        EXchange2(a,b);
cout<<"a="<<a<<";"<<"b="<<b<<endl;
double p=2.36,q=2.53;
EXchange3(p,q);
cout<<"p="<<p<<";"<<"q="<<q<<endl;
double *m,*n;
m=&p;
n=&q;
EXchange4(&m,&n);
cout<<"p="<<p<<";"<<"q="<<q<<endl;
return 0;
}

猜你喜欢

转载自blog.csdn.net/yaowang107/article/details/78356300