关于形参*&head的使用意义

来源:百度知道 编辑:UC知道 时间:2024/05/24 11:36:43
void delete(node *&head, char keyword);

这是一个被调用函数的函数声明,我很想直到这里的node *&head 是什么意思,以及传这种形式的参数,会有什么影响?
如果对这个函数进行调用,那么在主函数里写实参,又是怎样写的呢?还有就是node *&head,它的运算顺序是怎样的呢?我的意思是它是先取地址再指向,还是先指向再取地址。谢谢

其实就是node指针的引用。
typedef node * LPNODE;
LPNODE & head;
现在明白了吧?
node* head;传递的是指针,但是对于指针的原值却发生了COPY,这样你虽然可以对指针指向的内存进行修改但是不能对指针进行修改。
因此要传递指针的引用。
这样删除之后可以对该指针置NULL,比如这个模板函数:
template < typename T >
void SafeDelete( T * & p )
{
if( 0 != p )
delete p;
p = 0;
}