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?
#include<bits/stdc++.h>
using namespace std;

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

int call(int arr[][5],int n)
{
    if(n==1)
    return 0;

  cout<<"anything";

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

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

int arr[5][5];
memset(arr,0,sizeof(arr));
call(arr,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.