C++交换指针实例

2020-01-06 13:04:40王旭
  •     cout<<"pa = "<<pa<<" , pb = "<<pb<<endl<<endl;      m_swap(&pa,&pb); 
  •     cout<<"a = "<<a<<" , b = "<<b<<endl;      cout<<"*pa = "<<*pa<<" , *pb = "<<*pb<<endl; 
  •     cout<<"pa = "<<pa<<" , pb = "<<pb<<endl;  }  ?

    输出结果如下图所示:

    C++交换指针实例

    从结果看到,a和b的值没有变,变的是pa和pb这两个指针的值。

    C++引用方式:

    也可以通过传递指向指针的引用来实现指针的交换。

    需用*定义指针,用&定义引用,如果要交换两个指针,形参类型如下(以int为例):

    int *&ptr

    这个从右至左理解,首先ptr是个引用,需要用&符号,其次ptr与指向int型对象的指针相关联,需要用*符号。

    则交换指针的核心代码如下:

     

    1. void ptrSwp(int *&pi,int *&pj)  { 
    2.      int *pk = pi;       pi = pj; 
    3.      pj = pk;  } 
    ?

    demo如下:
     

    1. #include <iostream>  using namespace std; 
    2. void ptrSwp(int *&pi,int *&pj)  { 
    3.     int *pk = pi;      pi = pj; 
    4.     pj = pk;  } 
    5.   int main() 
    6. {      int i=42,j=24;