我想在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