I already know some matching a parameter with its argument in multidimensional array.
If I declare a multidimensional array like this:
void print(int (*a)[2], ...) //-----(1)
{ }
void print(int *a, ...) //-----(2)
int main(){
int arr[3][2]={ {1,2},{3,4},{5,6} };
print(a, ...) //-----(1)
print(a[2], ...) //-----(2)
}
I'm studying about dynamically creating an multidimensional array. Its code:
void print(int **a, ...)
{}
int main()
{
int row = 3;
int col = 2;
int sample[3][2]={ {1,2},{3,4},{5,6} };
int **twostar = new int*[row];
for(int i = 0; i < row; i++)
{
arr[i] = new int[col];
memset(twostar[i],0,col*sizeof(int));
}
print(twostar, ...)
}
This above code is working well. and I applied this parameter type to the code without dynamically allocating of a multidimensional array.:
void print(int **a, int m, int n);
int main()
{
int mat[][2] = { {1,2},{3,4},{5,6} };
print(mat, 3, 2); //<<---- error in mat!
}
void print(int **a, int m, int n)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
I thought that a pointer type matches an array. Doesn't 2-dimensional array match ** type?