почему и когда требуется двойной указатель?

Я был сисадмином большую часть своей жизни, но недавно решил потренироваться в моих знаниях по 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), и я заметил, что печать в конце функции вставки, кажется, работает. Поэтому, пытаясь найти ответы в Интернете, я не могЯ не нашел ничего очевидного, но я обнаружил, что большинство реализаций списков имеют двойные указатели. Я изменил свою функцию, чтобы использовать двойные указатели, и затем она внезапно начала работать. Может ли кто-нибудь помочь мне понять, чтоЯ знаю, что управление указателями является важной концепцией, и я понимаю, что такое указатель и как он связан с памятью, но я неЯ не понимаю, почему один указатель не изменяется, а двойной указатель - нет.

Спасибо!

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

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