Параметр diam
функции getMax
объявлен как
int *diam
Таким образом, вы можете применить только один оператор индекса к переменной. Например,
diam[r]
В этом случае типом выражения является скалярный тип int. Таким образом, вы не можете применять второй оператор индекса для объекта типа int.
С другой стороны, в этом вызове
getMax(&diam[m][n], m, n)
вы передаете указатель на память за пределы массиваdiam
то есть вы передаете адрес элемента diam[n][m]
, который не существует в массиве.
Чтобы использовать diam
в качестве двумерного массива, вам нужно объявить функцию как
int getMax( int m, int n, int diam[m][n] )
и вызовите его как
getMax( m, n, diam )
В этом случае в функции параметр diam
будет иметь тип int ( * )[n]
, и вы можете применить два оператора индекса к указателю.