Двумерный массив в функции
Имею задачу написать код, отсортировать элементы двумерного массива по столбцам.
Имею функцию void Sort(int mas[N_suits][N_ranks], int array_size){...}
При ее вызове из мейна Sort(in_hand[N_suits][N_ranks], Number_of_cards_in_hand); выводится сообщение о том, что аргумент типа int несовместим с параметром типа int(*)[].
Возникает вопрос, как в принципе, передать двумерный массив в функцию?
Ответы (2 шт):
Да так и передавать - если 1. размеры определены во время компиляции, 2. совпадают - то просто передать имя массива -
Sort(in_hand, Number_of_cards_in_hand);
Вот пример объявления такой функции, массива и передачи: https://ideone.com/BtKfVL
// Так у тебя для каждой размерности будет инстанцироваться своя функция
template<size_t N, size_t M>
void Sort(int (&mas)[N][M], ... ) { ... }
Sort(in_hand, Number_of_cards_in_hand);
// Или как у тебя изначально написано, но ВЫЗЫВАТЬ вот так.
// Сигнатуру оставить как в вопросе:
void Sort(int mas[N_suits][N_ranks], int array_size){...}
Sort(in_hand, Number_of_cards_in_hand);
Первый вариант, естественно, только для С++. По факту там я передаю ссылку на массив в функцию.