对指针形参的引用
以特定问题为例,在二叉树中插入一个数据域为x的新结点,可以很快写出下列代码:
void insert(Node* &root, int x)
{
if (root == NULL)
{
root = newNode(x);
return;
}
if ( )
insert(root->lchild, x);
else
insert(root->rchild, x);
}
在上述代码中,关键点在于形参指针root必须使用引用&,这样既可以访问root指针指向的区域,还可以改变root本身值(即root本身所代表的地址值,这与非指针形参的引用是一样的)。打个比方,引用是在使用同一个容器的基础上替换了容器内的东西,而非引用是复制了一个相同的容器,在这个复制的容器中进行内容的替换,因此不会对原容器造成影响。对指针形参的引用并不会造成直觉上可能发生的断链等问题。