求解,还不太清楚数组作为函数参数

求解,array_input(a, n)传递的是数组a,那这个参数a不应该就是array_input()的局部变量吗?为什么参数a存放的值还可以存放到数组a里面?

#include<stdio.h>
#define NUM 6
void array_input(int a[], int n);
int square_sum(int a[], int n);
int main()
{
    int a[NUM], n = NUM;
    printf("请输入整型数组的%d个元素:\n", NUM);
    array_input(a, n);
    printf("数组a的各元素平方和:%d", square_sum(a, n));
    return 0;
}
void array_input(int a[], int n)
{
    int i;
    for (i = 0; i < NUM; i++)
        scanf("%d", &a[i]);
}
int square_sum(int a[], int n)
{
    int i, sum = 0;
    for (i = 0; i < NUM; i++)
        sum += a[i] * a[i];
    return sum;
}

因为当数组为参数的时候,他是传入的“地址”,因此你对这个参数的更改(也就修改了对应地址的值),会影响到这个数组本身,可以区别一下实参和形参