此代码段对于在开头创建新节点有效。
void push(node **head_ref,int n_data){
node *new_node= new(node);
new_node->data=n_data;
new_node->next=(*head_ref);
*head_ref=new_node;
}
int main(){
node *head=NULL;
push(&head,data);
return 0;
}
这是无效的,但为什么呢? 我想要做的是创建一个参考参数,如Herbert Schildt所述。
void push(node &(*head_ref),int n_data){
node *new_node= new(node);
new_node->data=n_data;
new_node->next=head_ref;
head_ref=new_node;
}
int main(){
node *head=NULL;
push(head,data);
return 0;
}
答案 0 :(得分:2)
声明node &(*head_ref)
使head_ref
成为引用的指针,而不是对指针的引用,node*& head_ref
。
答案 1 :(得分:0)
Null-Pointer不能作为参考! 所以在C ++中,使用双指针是唯一的方法。
使用对空指针的引用可能会导致未定义的行为,这意味着您应该避免这种情况。
也许boost :: optional是你需要的,但你需要做一些修改。
但你为什么不只是使用std :: list?