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本身。