Здравствуйте
Можно так:
Учитывая, что размерности известны, т.к. массив статический:
void aa( int _a[][10] )
{
ShowMessage( _a[2][9] );
}
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int a[12][10];
a[2][9]= 29;
aa( a );
}
Но Вам же нужно передавать размеры в виде параметров. Тогда встаёт
вопрос: Зачем, создавая статический массив int a[12][12], передавать
его размеры, как будто он динамический?
ИМХО: размеры массива, приведённые Вами, приведены лишь для примера,
тогда совет: В следующий раз обозначайте к примеру так: a[m][n].
Будет понятнее, что размеры не статические.
Будем считать, что именно так Вы и написали, тогда:
void aa( int **_a, int _m, int _n )
{
ShowMessage( _a[2][9] );
}
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int **a;
int m= 12;
int n= 10;
a= new int*[m];
a[2]= new int[n];
a[2][9]= 29;
aa( a, m, n );
}
Если же всё-таки у Вас имеются всё-таки статические массивы, но
несколько и разных размерностей, к примеру: int a[12][10], b[10][12], то:
void aa( int *_a, int _m, int _n )
{
int **a;
a= new int*[_m];
for( int f= 0; f< _m; f++ )
a[f]= _a +f*_n;
ShowMessage( a[_m -1][_n -1] );
}
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int a[12][10];
int b[10][12];
a[11][9]= 119;
b[9][11]= 911;
aa( a[0], 12, 10 );
aa( b[0], 10, 12 );
}
И, наверное, крайний случай. Если же всё-таки у Вас имеются всё-таки статические
массивы и все одного размера, но разных типов, к примеру: int
a[12][10], double b[10][12], то:
template <class A> void aa( A _a[][10] )
{
ShowMessage( _a[2][9] );
}
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int a[12][10];
double b[12][10];
a[2][9]= 29;
b[2][9]= 29.29;
aa( a );
aa( b );
}
И т.д. и т.п. и прочее.
Коментарии к коду нужны?
Вопросы?