Я пытаюсь сделать некоторые функции работают над двумерными массивами:Использование двумерных массивов в качестве параметров
void display_matrix(int**, int, int);
void gen_matrix(int**, int, int);
int main()
{
srand(time(0));
int m=5, n=3;
int my_matrix[m][n];
gen_matrix(my_matrix, m, n);
display_matrix(my_matrix, m, n);
}
Я не знаю, что это неправильно, но я получаю следующее сообщение об ошибке, когда я звоню функции: [Ошибка] не может преобразовать 'int () [((sizetype) (((ssizetype) n) + -1)) + 1)]' to 'int *' для аргумента '1' to 'void gen_matrix (int **, int, int) '
Я знаю, что могу использовать вектор, но я стараюсь практиковать и запоминать использование указателей и массивов.
Вы также можете рассмотреть использование класса шаблонов с размерами в качестве интегральных параметров. – Pete
'int **' не является двумерным массивом. Итак, вот твоя проблема. – AnT
«Я пытаюсь практиковать и запоминать использование указателей и массивов». Затем, как этот код написан, вы должны скомпилировать его как C, потому что по крайней мере через C++ 11 язык не поддерживает массивы переменной длины, так как вы 'используется в 'main()'. Некоторые поставщики поддерживают его по расширению, но он не является частью стандарта. И если вы используете их в 'main', есть ли причина, по которой вы решили * не * использовать их в списке параметров? – WhozCraig