Не передается значение по ссылке с++

При считывании файла и записи в список возникает проблема в голове списка. Раньше head была глобальной переменной и все работало, но как только я убрал её и решил передавать в качестве указателя, то все пошло не в правильном направлении) Во время добавления записи head записывает область памяти в свой адрес, но при выходе из функции add в read_file адрес head обнуляется.


void add(List* head,int id, string name, string surname, string zodiak, int day, int mounth, int year) {
  List* node = new List;
   node->id = id;
    node->name = name;
    node->surname = surname;
    node->zodiak = zodiak;
    node->dr.day = day;
    node->dr.mounth = mounth;
    node->dr.year = year;
    node->next = head;
    if (head == NULL) {
            node->next = node;
            node->prev = node;
            head = node;
    }

}

int read_file(List* head) {
  add(head,id, name, surname, zodiak, day, mounth, year);
}

int main(){
List* head = NULL;
int id = read_file(head);
return 0;
}

Ответы (0 шт):