IDE выдает мне эту ошибку, когда я пытаюсь скомпилировать:
random.h|11|error: expected ',' or '...' before 'arr'|
среди других, но это та, которая является моей самой большой проблемой.
Я могу сделать это в своей основной функции, но я хочу сделать это, вызвав функцию, которая инициализирует любой двумерный массив, который я ему предоставлю. Тогда у меня есть другая функция для печати массива, но они более или менее это то же самое, за исключением операторов.
Я начинающий, так что не стесняйтесь посмеяться!
void InitializeArray2D(int& arr[int x][int y])
{
for (int i=0; i<x; i++)
{
for(int j=0; j<y; j++)
{
cout<<"arr["<<i<<"]["<<j<<"]=";
cin>>arr[i][j];
}
}
}
по факту
int& arr[x][y]
(Я удалил синтаксические неверные спецификаторы типов x и y) — это объявление указателя на массив ссылок. C ++ не позволяет объявлять массивы ссылок.
Правильная декларация будет
void InitializeArray2D(int ( & arr )[x][y]);
при условии, что x и y определены как постоянные.
Смеется в сторону, ваш прототип функции очень искажен.
Вы хотите что-то более похожее на:
void InitializeArray2D(int &arr[][], int x, int y) {
}
или же
void InitializeArray2D(int **arr, int x, int y) {
}
Примечание: это предполагает, что ваш массив уже выделен
Кроме того, сделайте себе одолжение и сделайте свой внешний цикл y и внутренний цикл x не то, чтобы это имело большое значение, но это облегчает визуализацию.
Редактировать:
Как любезно и точно указал Эд С., использование x в качестве внутреннего цикла имеет значение с точки зрения локальности данных. Привыкайте делать это раньше, а не позже.