Le passage d'un tableau en argument d'une fonction en C

J'ai écrit une fonction contenant le tableau comme argument,
et de l'appeler en passant de la valeur de tableau comme suit.

void arraytest(int a[])
{
    //changed the array a
    a[0]=a[0]+a[1];
    a[1]=a[0]-a[1];
    a[0]=a[0]-a[1];
}

void main()
{
    int arr[]={1,2};
    printf("%d \t %d",arr[0],arr[1]);
    arraytest(arr);
    printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);
}

Ce que j'ai trouvé est que je suis d'appel arraytest() de la fonction par la transmission de valeurs, la copie originale de int arr[] est changé.

Pouvez-vous expliquer pourquoi?

  • Vous êtes de passage le tableau par référence, mais vous êtes en train de modifier son contenu, c'est pourquoi vous voyez un changement dans les données