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]);
}