IDE дает мне эту ошибку, когда я пытаюсь скомпилировать:
random.h|11|error: expected ',' or '...' before 'arr'|
среди прочего, но это и есть моя самая большая проблема.
Я могу сделать это в своей основной функции, но я хочу сделать это, вызвав функцию, которая инициализирует любой 2D-массив, который я ему даю. Тогда у меня есть другая функция для печати массива, но они более или менее одинаковы, кроме инструкций. Я полный новичок, поэтому, пожалуйста, не стесняйтесь смеяться!
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 в качестве внутреннего цикла имеет значение с точки зрения местоположения данных. Привыкайте к этому раньше, а не позже.
std::vector
или std::array
. PS: Хороший аватар;)