C++指针与引用

修改指针的值:

把一个指针赋值给另一个指针,只修改值,不修改地址

如以下函数:

void Func2(myUtil* pMyClass ,myUtil* newPMyClass) {


	int data = pMyClass->data;
	cout << data << endl;


	/*pMyClass = newPMyClass;*/      //此时只修改了newPMyclass的调用值 并没有修改地址


	pMyClass = new myUtil(20);       //传值传入新的值
	data = pMyClass->data;
	cout << data << endl;
	
	return;
}

根据输出结果, pMyClass的值发生变化,但存储地址没有发生变化

双指针的使用

使用例子:

void Func3(myUtil** pMyClass) {
	*pMyClass = new myUtil(50);   //双指针会改变地址 指向别的区域
}
函数的参数是一个指针的指针

当传入一个指针时 函数的值与地址会发生。

函数的使用:Func3(&p)     //传入一个指针

调用func1之后,p指向新的对象。在COM编程中,你到处都会碰到这样的用法--例如在查询对象接口的QueryInterface函数中:       interface ISomeInterface {    
         HRESULT QueryInterface(IID &iid, void** ppvObj);   
         ……   
      };   
      LPSOMEINTERFACE p=NULL;    
      pOb->QueryInterface(IID_SOMEINTERFACE, &p);   
       
  此处,p是SOMEINTERFACE类型的指针,所以&p便是指针的指针,在QueryInterface返回的时候,如果调用成功,则变量p包含一个指向新的接口的指针。 


引用指针:

void Func4(myUtil* &pMyClass) {
	pMyClass = new myUtil(60);   //指针传地址引用
}

效果类似于双指针的使用:

使用时 直接把指针传入就好Func4(p);
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值