Вы можете объявить функцию, которая принимает массив либо по значению, либо по ссылке.
Например (по значению)
void solve_point( char ( *board )[4] ){
printf("solve_point\n");
//board[2][2] = 'c';
}
int main(){
char boardEx[5][4];
solve_point(boardEx);
}
Или (по ссылке)
void solve_point(char ( &board )[5][4] ){
printf("solve_point\n");
//board[2][2] = 'c';
}
int main(){
char boardEx[5][4];
solve_point(boardEx);
}
В обоих случаях вы можете получить доступ к элементу массива с помощью выражения, подобного этому
board[i][j] = 'c';
Имейте в виду, что если у вас есть многомерный массив, например, такой
T a[N1][N2][N3];
где T
- некоторый спецификатор типа, тогда вы можете переписать объявление следующим образом
T ( a[N1] )[N2][N3];
Теперь, чтобы получить указатель на элементы массива, просто замените ( a[N1] )
, например, на ( *pa )
T ( *pa )[N2][N3] = a;
Чтобы получить ссылку на массив, перепишите его объявление как
T ( a )[N1][N2][N3];
и замените ( a )
на ( &ra )
, например
T ( &ra )[N1][N2][N3] = a;
Если вы хотите написать функцию, которая принимает двухмерные массивы разных размеров по ссылке, тогда вы можете написать
template <typename T, size_t M, size_t N>
void solve_point( T ( &board )[M][N] ){
//...
}
int main(){
char boardEx[5][4];
solve_point(boardEx);
}