C++之*与**与&的爱恨情仇

 

 

一、解释*和&
&在变量定义区,表示引用 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本身。

 

posted on 2023-01-09 15:11  疯狂delphi  阅读(51)  评论(0编辑  收藏  举报

导航