在c语言中 符号" *& " 在一起去定义是什么意思?

哪位高手能帮我详细的解释下吗,有例子就更好了。 谢谢了。

呵呵,好久没碰这个了,都忘得差不多了。记忆中" *& "的意思应该是表示一个数据,相当于一个基本数据。“&”为取地址,在前面加上“*”则相当于取这个地址中的值,即相当于一个数值。例如:如果没错的话,也就相当于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进行动态分配,会回馈给实参的。

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网