首先指出你理解的一个错误,“p和*&p应该都是代表同一个内存存储单元的地址”这句话没错,但是它是有条件的,是在对变量的引用中才正确。
在本题中形参是对变量的声明,并不是对变量的引用。所以你的形参为指针的引用。即 node *&head 为实参的引用。
要想将其换为*head,必须return head;之后调用时获得新的head。
看来你是把指针的定义没搞清楚。指针同其他变量一样也是一个变量。给个例子,自己慢慢比较比较!
void swap(int & m,int & n)//若为swap(int m,int n)将不会交换。
int m,n;
swap(m,n);
将m,n换为指针即变成了
void swap(int* & m,int* &n)//若为swap(int * m,int * n)也将不会交换。
int * m,* n;
swap(m,n);
〓