почему и когда требуется двойной указатель?
Я был сисадмином большую часть своей жизни, но недавно решил потренироваться в моих знаниях по dev и попробовать себя в позе devops. Я практиковал некоторые навыки C и Python и написал код для вставки числа в связанный список.
void list_insert(struct list *h, int d)
{
struct list *elem = malloc(sizeof(struct list));
elem->data = d;
elem->next = NULL;
if (!h) {
h = elem;
} else {
elem->next = h;
h = elem;
}
}
Я заметил, что эта функция неПохоже, что это изменяет внешний вид переменной h (т.е. все, что передается в list_insert), и я заметил, что печать в конце функции вставки, кажется, работает. Поэтому, пытаясь найти ответы в Интернете, я не могЯ не нашел ничего очевидного, но я обнаружил, что большинство реализаций списков имеют двойные указатели. Я изменил свою функцию, чтобы использовать двойные указатели, и затем она внезапно начала работать. Может ли кто-нибудь помочь мне понять, чтоЯ знаю, что управление указателями является важной концепцией, и я понимаю, что такое указатель и как он связан с памятью, но я неЯ не понимаю, почему один указатель не изменяется, а двойной указатель - нет.
Спасибо!