title: Why use **head (and not *head) in RemoveHead(node) function?
body: <p>In most of the explanations in the book the author insists of using **list passing  instead of *list, however as per my understanding I feel there is nothing wrong in *list.  Please someone explain me in detail if i am wrong. For example, to delete head of a linked  list, the author says the below code is wrong.</p>
  
  <pre><code>void RemoveHead(node *head)
  {
     node *temp = head-&gt; next; /* line 1 */
     free(head);
     head = temp;
  }
  </code></pre>
  
  <p>Instead he says the below code must be used</p>
  
  <pre><code>void RemoveHead(node **head)
  {
     node *temp = (*head)-&gt; next;
     free(*head);
     *head = temp;
  }
  </code></pre>