[SOLVED] Passing an array as an argument to a function in C


I wrote a function containing array as argument,
and call it by passing value of array as follows.

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]);
    printf("\n After calling fun arr contains: %d\t %d", arr[0], arr[1]);

What I found is though I am calling arraytest() function by passing values, the original copy of int arr[] is changed.

Can you please explain why?


When passing an array as a parameter, this

void arraytest(int a[])

means exactly the same as

void arraytest(int *a)

so you are modifying the values in main.

For historical reasons, arrays are not first class citizens and cannot be passed by value.

Answered By – Bo Persson

Answer Checked By – Senaida (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published.