Не передается значение по ссылке с++
При считывании файла и записи в список возникает проблема в голове списка. Раньше 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;
}