哪位高手能帮我详细的解释下吗,有例子就更好了。 谢谢了。
呵呵,好久没碰这个了,都忘得差不多了。记忆中" *& "的意思应该是表示一个数据,相当于一个基本数据。“&”为取地址,在前面加上“*”则相当于取这个地址中的值,即相当于一个数值。例如:如果没错的话,也就相当于a与*&a是一样的,即“*”与“%”结合后相互抵消掉了。呵呵,也不知道残留在记忆中的是不是正确的,希望能给你点提示、参考吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-05-04
表示对变量取地址,再取该地址中的内容。int a;//*&a其实就是a。所以这样的做法是有些多余的。追问
这个符号用在函数参数之前呢?比如:typedef struct link {
int data;
link* next;
}link;
void reverse(link*& head); 这是什么意思? 是改变head 的意思吗?
这不是c的语法是c++的语法,表示给实参的指针变量取别名为head,这样在reverse中对head进行操作会直接改变实参的内容。
追问请问高手,这样做的好处是什么? 如果不这样,直接void reverse(link* head),去掉引用符号会有什么影响?
追答有影响。如果只是定义指针,不定义为指针的引用。那么如果在reverse里对head进行操作,比如head =(...)malloc(.)就是动态分配单元,是回馈不到实参的。因为实参只是将它的值给了head,但是两个参数不是同一个地址。用引用就不同了,引用只是取别名而已。所以head其实就是实参,对head进行动态分配,会回馈给实参的。
本回答被提问者采纳