本書のほとんどの説明では、* listの代わりに** list passingを使用することを主張していますが、私の理解によれば、* listには何も間違いはないと感じています。私が間違っていると誰かが私に詳しく説明してください。例えば、リンクされたリストの頭を削除するには、下のコードが間違っていると作者は言う。RemoveHead(ノード)関数で** head(および* headではない)を使用する理由は?
void RemoveHead(node *head)
{
node *temp = head-> next; /* line 1 */
free(head);
head = temp;
}
代わりに、彼は次のコードは、あなたの最初の例では
void RemoveHead(node **head)
{
node *temp = (*head)-> next;
free(*head);
*head = temp;
}
これはC++の質問より多くのものです。 C++ではおそらく 'node *&'を渡すべきですが、私は実際のC++コードでこのように何回も見たことがあるので、タスクを削除していません。 –
私の署名は 'node * RemoveHead(node * head)'でしたが... –