Двумерный массив в функции

Имею задачу написать код, отсортировать элементы двумерного массива по столбцам.

Имею функцию 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 шт):

Автор решения: Harry

Да так и передавать - если 1. размеры определены во время компиляции, 2. совпадают - то просто передать имя массива -

Sort(in_hand, Number_of_cards_in_hand);

Вот пример объявления такой функции, массива и передачи: https://ideone.com/BtKfVL

→ Ссылка
Автор решения: Georgy Firsov
// Так у тебя для каждой размерности будет инстанцироваться своя функция
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);

Первый вариант, естественно, только для С++. По факту там я передаю ссылку на массив в функцию.

→ Ссылка