我想知道的是*&手段。 上下文:
功能实现如下:
void headInsert( Node*& head, int info )
{
Node* temp = new Node(info);
temp->link = head;
head = temp;
}
为什么不只是使用Node& ?
由于
答案 0 :(得分:3)
Node*&
表示“对节点指针的引用”,而Node&
表示“对节点的引用”。
为什么不直接使用Node& ?
因为headInsert
函数需要更改头指向的内容。
答案 1 :(得分:1)
您可能希望查看特定调用,其中引用指针显示其用途:
Node* pHead = somewhere;
headInsert(pHead, info);
// pHead does now point to the newly allocated node, generated inside headInser,
// by new Node(info), but NOT to 'somewhere'
让我评论一下你的例子,也许这会更清楚:
void headInsert( Node*& head, int info )
{
Node* temp = new Node(info); // generate a new head, the future head
temp->link = head; // let the former head be a member/child of the new head
head = temp; // 'overwrite' the former head pointer outside of the call by the new head
}