c++指针与数组的使用,一点也没有思路

定义一个函数,将数组中n个证书按照相反的顺序存放。程序涉嫌要求如下:
1.用数组作为函数形参实现函数,函数调用时实参为数组。
2.用数组作为函数形参实现函数,函数调用时实参为指针。
3.用指针作为函数形参实现函数,函数调用时实参为数组。
4.用指针作为函数形参实现函数,函数调用时实参为指针。

用数组作为函数形参,函数调用时实参为数组
void reverse_array(int arr[], int n) {
  for (int i = 0; i < n / 2; i++) {
    int temp = arr[i];
    arr[i] = arr[n - i - 1];
    arr[n - i - 1] = temp;
  }
}
用数组作为函数形参,函数调用时实参为指针
void reverse_array(int *arr, int n) {
  for (int i = 0; i < n / 2; i++) {
    int temp = *(arr + i);
    *(arr + i) = *(arr + n - i - 1);
    *(arr + n - i - 1) = temp;
  }
}
用指针作为函数形参,函数调用时实参为数组
void reverse_array(int *arr, int n) {
  for (int i = 0; i < n / 2; i++) {
    int temp = arr[i];
    arr[i] = arr[n - i - 1];
    arr[n - i - 1] = temp;
  }
}
用指针作为函数形参,函数调用时实参为指针
void reverse_array(int *arr, int n) {
  int *front = arr;
  int *back = arr + n - 1;
  while (front < back) {
    int temp = *front;
    *front = *back;
    *back = temp;
    front++;
    back--;
  }
}