Passer un tableau par référence en C

Je suis novice en C et j'ai un doute.

Depuis les fonctions C créer des copies de ses arguments, je me demandais pourquoi le code suivant fonctionne comme prévu:

void function(int array[]){

    array[0] = 4;
    array[1] = 5;
    array[2] = 6;   
}

int main(){

    int array[] = {1,2,3};

    function(array);

    printf("%d %d %d",array[0],array[1],array[2]);

    return 0;
}

Avec la ligne de la sortie d'4 5 6.

Pourquoi ce travail tandis que le suivant ne l'est pas?

void function(int integer){

    integer = 2;
}

int main(){

    int integer = 1;

    function(integer);

    printf("%d",integer);

    return 0;
}

La sortie est à 1 dans ce cas.

Version courte: Pourquoi les fonctions de modifier les valeurs de leurs variables parents si elles sont transmises sous forme de tableau?

Merci à vous tous!

source d'informationauteur Costagero