指针的引用作为函数参数有啥用?

一句话总结

用指针的引用作为某函数的参数来传递,其目的就是为了在这个函数里面改变该指针的值(就是改变指针所指向的对象)。


转载:

C++中的函数参数有三种传递方式:值传递、指针传递和引用传递。。。

2011-03-11 16:43 海相连  |  分类:其他编程语言  |  浏览5242次
今天看数据结构,有一个建链表函数调用
void InitList(sNode*&HL)
{
    HL=NULL;
}
难道这是指针引用??????不是用指针就行了么,为什么还要加上一个引用符号,请明示下,谢谢。。。
2011-03-11 16:47 提问者采纳
单独指针只是传递的指针的值,指针形参的变化与调用的实参无关,只有用指针的引用才能将函数体内的初始化值传递回去
追问
能不能详细点,不是很懂。。单独指针不也能改变原实参的值么,,指针引用也可以,作用不都是一样的么???
回答
1、所谓传递指针,只是传递指针的值的意思就是这样:如果有变量a,传递进去的是a的地址,注意这个值是复制给了函数体内的形参,在函数体内可以通过这个地址绕回来修改a的内容,即使修改了函数体内的形参,但是并不能就因此修改a的地址
2、所谓引用从原则而言,则是变量自己,当然在函数体内修改就会作用到原来的变量上,具体设计到引用的实现也可以是指针。
你的要求是在函数体内修改一个指针变量的值,依照上面的原则,必须要传递该指针变量的地址(或者指针变量自己)才可以在函数体内间接(引用可以说是直接)修改该指针变量的值,所以只有传递指针的指针(或者指针的引用)才行
追问
嗯,,谢谢哈,经过你的提醒,我再回去翻书的时候才发现,原来是我自己没看清楚,原来就是要修改一个指针的地址啊,怪不得用了二级指针。。你掌握的真扎实,佩服。。现在知道了,可是能说说*&与**的区别么???
回答
你的理解还是不太精确啊,不是要修改指针的地址,而是要通过其存储地址来间接修改其值
*&自然就是指针的引用,概念上说自然就是指针的别名啦,当然编译程序具体实现是可以用二重指针的
**自然是指针的指针,用于存放指针的地址,当然,函数体内是可以通过二重指针来间接修改函数外指针的值的
提问者评价
谢谢!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值