Passing a 2D array while using Backtracking

I saw an answer regarding how to pass a 2d-array in a function there are 3 or more methods given when I tried one of them it worked just fine. But when I’m trying to use that method in backtracking it is giving me an error.

I tried declaring it globally it works that way. And I know my declaration is wrong I’m telling the compiler that I’m going to pass an integer type data then I’m passing a 2d-array. My question is why I’m not getting an error in the main function when I’m calling the “call” function for the first time inside main. And how can I solve this issue?
using namespace std;

int callAgain(int,int);
int call(int,int);

int call(int arr[][5],int n)
    return 0;


   callAgain(arr,n-1);     //getting error here.

  return 0;
int callAgain(int arr[][5],int n)
 return 0;
int main(){

int arr[5][5];

return 0;

error: invalid conversion from int(*)[5] to int [-fpremissive]

It is because of the signatures for the functions you have written in the top two lines.
They don’t match with the function implementation.
you have written :
on line 2: callAgain(int, int) it should be callAgain(int arr[][5], int)
on line 3: call(int,int) it should be call(int arr[][5], int)

Also please start reading and understanding what compiler says. If you would have read it then you would have solved this by yourself.