Я пытаюсь сделать функцию, которая инициализирует 2D-массив в C ++

0

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];
        }
    }
}
  • 2
    Это синтаксическая ошибка, и в C ++ все равно нет VLA.
Теги:
arrays
function

2 ответа

1

по факту

int& arr[x][y]

(Я удалил синтаксические неверные типы спецификаторов x и y) является объявлением указателя на массив ссылок. C++ не позволяет объявлять массивы ссылок.

Правильная декларация будет

void InitializeArray2D(int ( & arr )[x][y]);

при условии, что x и y определены как постоянные.

  • 0
    Да, создание x и y констант сделало свое дело. Большое спасибо, Влад!
0

Смех в сторону, ваш прототип функции очень искалечен.

вам нужно что-то большее:

void InitializeArray2D(int &arr[][], int x, int y) {
}

или

void InitializeArray2D(int **arr, int x, int y) {
}

Примечание: предполагается, что ваш массив уже выделен

также сделайте себе одолжение и сделайте свою внешнюю петлю y и внутреннюю петлю x, а не то, что это имеет большое значение, но это облегчает визуализацию.

Редактирование: поскольку Эд С. любезно и точно указал, что использование x в качестве внутреннего цикла имеет значение с точки зрения местоположения данных. Привыкайте к этому раньше, а не позже.

  • 2
    «Кроме того, сделайте себе одолжение и сделайте свой внешний цикл у и внутренний цикл х, а не то, что это имеет значение так много» - уверен, это делает; местонахождение данных
  • 1
    или сделайте себе одолжение и используйте std::vector или std::array . PS: Хороший аватар;)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню