C语言参数传递的问题

数组arr[]传递到函数内数组a[]后,数组a[]进行排序为什么也会引起数组arr[]的变化,这里不是值传递吗


#include
 
void Quicksort(int a[], int left, int right) {   //快排函数
    int temp;
    int mid = a[(left + right) / 2];            //找基准值
    int i = left;
    int j = right;

    while (i <= j) {   
        while (a[i] < mid) i++;
        while (a[j] > mid) j--;
        if (i <= j) {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            i++;
            j--;
        }
    }
    if (i < right) Quicksort(a, i, right);        //递归
    if (j > left) Quicksort(a, left, j);           //递归
}
 
int main() {
    int n, m, i;
    int arr[100];
    scanf_s("%d", &n);
    for (i = 0; i < n; i++) {
        scanf_s("%d", &arr[i]);                        //输入
    }
 
    Quicksort(arr, 0, n - 1);                        //调用函数
 
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);                        //输出
    }
    return 0;
}

数组名相当于指针,是数组的首地址,实际值传递的是首地址。因此对a数组内容的修改,实际也是修改arr数组内容