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

来源:互联网 发布:mac制作铃声的教程 编辑:程序博客网 时间:2024/05/29 17:45

一句话总结

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


转载:

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

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

0 0
原创粉丝点击