C++

C++ **(指针的指针)和*&(指针的引用)——个人理解

Posted by 转载 on October 7, 2022

C++ **(指针的指针)和 *&(指针的引用)——个人理解

原文地址:https://blog.csdn.net/weixin_48622537/article/details/111305840

一、解释*和&

&在变量定义区,表示引用int &x;
&在变量操作区,表示取地址符int x=10, *p=&x;
*在变量定义区,表示指针int *x;
*在变量操作区,表示解引用int *x;cout<<*x;

二、解释*和&

  • **是指针的指针
  • *&是指针的引用

注意:只要对指针的引用,没有指向引用的指针

三、代码解释传单指针、传双指针、传指针的引用

具体使用起来原理是相同的

  • 传单指针
    void onePointerFunc(int *pMyClass) 
    { 
       pMyClass = new int; 
    }  
    

    调用:

    int* p = new int; 
    onePointerFunc(p); 
    

    调用onePointerFunc后,p没有指向新的对象。

  • 传双指针:
    void poiPointerFunc(int** pMyClass)
    { 
      *pMyClass = new int; 
    } 
    

    调用:

    int* p =new int;  
    poiPointerFunc(&p);
    

    调用poiPointerFunc后,p没有指向新的对象。

  • 传指针的引用:
    void refPointerFunc(int *&pMyClass)
    { 
       pMyClass = new int; 
    }
    

    调用:

    int* p = new int;
    refPointerFunc(p);
    

    调用refPointerFunc之后,p指向新的对象。
    其实,指针的引用和指针的指针是一码事,至少语法有所不同。传递的时候不用传p的地址&p,而是直接传p本身。