没有弄清楚这串代码是如何工作的,可以解释一下数据是如何传递的吗?

问题遇到的现象和发生背景

我没有弄清楚数据是如何传递的,可以解释一下吗?以及在C语言中 array[n] 是指arry中可以包含n个数字,还是n代指index,匹配array中的元素,我有一点混淆。

用代码块功能插入代码,请勿粘贴截图

#include 

void print_int_array(int A[], int n) {
    for (int i=0; i"%4d", A[i]);
    }
    printf("\n");
}

void copy_int_array(int src[], int dst[], int n) {
    for (int i = 0; i < n; i++) {
        dst[i] = src[i];
    }
}    

/* 此外,数组不能从函数返回。相反,我们可以传递一个“返回”数组作为参数,由函数修改(参见copy_int_array中的dst)。 这是什么意思?*/

int main(int argc, char *argv[]) {
    int A[5] = {1, 2, 3, 4, 5};
    int B[5] = {0};
    print_int_array(B, 5); /*不太清楚B是传递哪一组数字到function print_int_array */
    copy_int_array(A+2, B, 2);
    print_int_array(B, 5);
    print_int_array(A+2, 2);
}

/输出/

0 0 0 0 0
3 4 0 0 0
3 4

感谢答疑

定义数组的时候,中括号里的值代表总共元素个数,使用的时候就是index。这是基础性的,看看书就行。
c中数组是地址传递,23行主程序传递进去的是A第三个元素的地址,函数中操作就是把A的3,4赋值给B的前两个位置。