Trying to access static array in function fill() by passing its address as an argument.
#include <iostream>
using namespace std;
void fill(int val, int n, int m, int **arr){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            arr[i][j] = val;
            arr[i][j] = val;
        }
    }
}
int main(){
    int n = (cin>>n, n);
    int m = (cin>>m, m);
    int arr[n][m];
    fill(1, n, m, (int**)arr);
}
If we are not allowed to access arr[n][m] 2-D array outside the main() function by casting it into double-pointer, then what is the right way to access that memory outside main()?
Solution:
void fill(int val, int n, int m, int *arr){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            *(arr + i * m + j) = val;
        }
    }
}
int main(){
    int n = (cin>>n, n);
    int m = (cin>>m, m);
    int arr[n][m];
    fill(1, n, m, &arr[0][0]);
}
 
     
    