Do pointers to structures in C work differently than other pointers? For example in this code:
typedef struct node {
    int data;
    struct node *next;
} node;
void insert(node **head, int data) {
    node *new_node = malloc(sizeof(node));
    new_node->data = data;
    new_node->next = *head;
    *head = new_node;
}
int main() {
    node *head = NULL;
    insert(&head, 6);
Why do I have to use a pointer to a pointer and can't use the variable head in the insert function like in this example with arrays:
void moidify(int *arr) {
    *arr = 3;
}
int main() {
    int *array = malloc(8);
    *array = 1;
    *(array + 1) = 2;
    moidify(array);
}
Here I don't have to pass &array to the function.