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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 

 

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

 

翻译

搜索

复制

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: c++