why we use **head_ref in this prog i am not able to understand the logic inolved in using **head_ref in this program

void push(struct node** head_ref, int new_data)
{
/* allocate node /
struct node
new_node =
(struct node*) malloc(sizeof(struct node));

/* put in the data  */
new_node->data  = new_data;

/* link the old list off the new node */
new_node->next = (*head_ref);

/* move the head to point to the new node */
(*head_ref)    = new_node;

}

//