我想在head-> next为NULL的情况下为NULL结构。 但是,当我将它传递给一个函数以将其设置为空时它不起作用。如何将空结构传递给函数?
void remove(struct node* head)
{
int val;
cout << "Enter a value to delete: ";
cin >> val;
if (head->next == NULL)
if (head->data == val)
head = NULL;
}
虽然它没有传递给函数时工作正常,但直接在主函数中完成。 我哪里出问题了?
啊,好吧。 然后有一个问题。 node * theHead = NULL; 删除(theHead); node * theHead = NULL; remove(&theHead); 第一个不会通过引用而不是值传递吗? 第一个是指向地址的指针 而另一个解引用它。 或者我弄错了? – user2180833 2013-03-23 17:25:12
@ user2180833 Nah。在第一种情况下,你是通过值传递指针(但是'remove'可以解引用指针并修改该值;但是你不能修改指针本身,比如将它设置为NULL)。第二,你传递它的指针地址。把它想象成更高一级的meta。引起混淆的一个原因是,在这种情况下,'&theHead'_并不意味着通过引用传递。在这个上下文中的&是用于初始化指针的地址运算符。 – 2013-03-23 17:27:43
@ user2180833其中'&'表示通过引用传递的上下文在函数的参数中,例如,如果它是'void remove(node&head)',那么如果你像这样传递一个'node'值到'remove':'node someValue = whatever;删除(someValue);'然后它会通过引用传递。 – 2013-03-23 17:29:02