指针作参数,指针变量的引用问题

总感觉只要把指针作为参数,就可以达到我们需要的效果。举一个例子,我通过“bool Delete(BSTree p)”这个函数来删除结点*p(注:BSTreeBSTNode*指针变量),但是每次都是提示内存溢出的问题,弄的好郁闷,后来仔细想了想,好像想出来了一些东西。

先说一下上面说的这个函数,如果我们传递过来一个指向一个结构体(二叉树)的指针,它占有一片内存(设为A),但在函数中,这个指针又指向了另一块内存(设为B)。于是,在函数实现中,这个指针(的确是指向原来内存A的那个指针)又指向内存B,于是,对B进行一系列操作,虽然进行了删除操作,但是那都是对内存B的操作,我们的内存A并没有发生任何变化,于是,没有达到我们需要的效果。

但是,倘若我们使用引用就不一样了。因为引用的时候,我们形参的那个指针变量其实就是我们传递过来的指针变量(只是一个别名,它们两个指针又共同的存储地址,当然指向相同的内存空间了,于是呢,我们在函数中的任何操作都可以反映到内存A的操作,于是可以达到我们的目的。

 

如果我们想“”通过指针达到我们的目的的话,也就是说修改实参的内容,那我们在函数中必须通过*p来修改我们要修改的内容。但是,如果我们仅仅是通过修改指针的位置达到我们目的的话(例如上面通过修改指针的位置释放某一块儿内存),这样是没法达到的。于是呢,我们只用通过传递指针的时候,再加上引用,使用指针变量的引用,这样呢,我们在函数实现中的指针就是实参的指针(是实参指针的一个同名变量,也就是一个别名!),这样,我们的修改,也就达到了我们的作用!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值