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