Wskaźnik wskaźnika C i błąd seg

Poniżej znajduje się moja prosta lista połączonych w C. Moje pytanie jest w „headRef = & newNode;” co powoduje błąd segmentacji. Potem spróbowałem zamiast tego „* headRef = newNode;” co rozwiązuje problem uszkodzenia seg. Chociaż wydaje mi się, że dwie linie kodu działają w ten sam sposób, dlaczego jeden powoduje błąd seg, a drugi nie? Z góry dziękuję.

struct node{
  int data;
  struct node* next;
};

void Push(struct node** headRef, int data){
  struct node* newNode = malloc(sizeof(struct node));
  if(!newNode) return;
  newNode->data = data;
  newNode->next = *headRef;
  headRef = &newNode;
  return;
}

questionAnswers(4)

yourAnswerToTheQuestion