Указатель C и ошибка сегмента

Ниже приведен мой простой связанный список на C. Мой вопрос находится в разделе "headRef = & amp; newNode;" который вызывает ошибку сегментации. Тогда я попытался вместо этого * headRef = newNode; & quot; которая решает проблему ошибки сегмента. Хотя мне кажется, что две строки кода работают одинаково, почему одна вызывает ошибку сегмента, а другая - нет? Заранее спасибо.

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;
}

Ответы на вопрос(4)

Ваш ответ на вопрос