Во-первых, как сказал Чарльз, С не имеет ссылок. Но обычно вы можете заменить ссылки указателями и получить эквивалентные результаты с помощью немного другого синтаксиса.
Во-вторых, в вашем описании говорилось, что вы пытались передать массив 2D int
, но в вашем объявлении предполагается, что это на самом деле массив int *
указателей. Итак, что это должен был быть массив int
или массив int *
?
Предполагая, что вам нужен массив int
(и массив char
), вариант с указателями на массив вместо ссылок на массив может выглядеть следующим образом
void foo(int (*a)[2][2], char (*b)[4]);
В основном тот же синтаксис, который вы использовали, но с *
вместо &
. Внутри функции элементы массива будут доступны как (*a)[i][j]
и (*b)[k]
.
Эта функция будет вызываться, как показано ниже
int a[2][2];
char b[4];
...
foo(&a, &b);