Указатель на указатель vs простой указатель в C
Недавно написал стек на C и была у меня там такая вот функция (если она неэффективна, то это не важно):
void push(struct Stack* stack, int value){
if (isFull(stack)){
realloc(stack->array, sizeof(stack->array)+sizeof(int));
stack->size += 1;
}
stack->array[stack->top_index + 1] = value;
stack->top_index += 1;
return;
}
Всё работало. Элементы добавлялись. После я решил написать список по гайду с geeksforgeeks (https://www.geeksforgeeks.org/linked-list-set-2-inserting-a-node/). Там я столкнулся с указателями на указатели. Вроде бы понял, что это нужно, если надо изменить указатель, который приходит в функцию как аргумент. Но почему тогда у меня всё работало в push-е стека? Я же там делаю realloc, т.е. меняю место в памяти, куда указывает указатель, значит меняю и его. Но, опять же, "двойного" указателя нет, а всё работает. Пожалуйста, объясните подробно, почему это так?