«Не работает»? Код работает . И это прекрасно работает. (Предполагая, что компилятор позволяет использовать эти 13-символьные строковые литералы для инициализации массивов размера 12. На самом деле это ошибка в C ++, но вы сказали, что получаете простое предупреждение).
Это
mazeTraverse(maze);
скомпилирует и сделает именно то, что вы хотите, чтобы он делал (как я понимаю). Что именно не работает в вашем случае? «Не работает» - не совсем содержательное описание проблемы.
Что касается избавления от предупреждения при инициализации массива, если вы настаиваете на наличии массива точного размера, вам придется инициализировать его по-символьно, как в
char maze[ size ][ size ] = {
{ '#', '#', '#', ... },
{ ... },
// and so on
};
Если вы хотите использовать строковые литералы, то, как вы сами отметили, вы должны объявить внутренние подмассивы большего размера
char maze[ size ][ size + 1 ] = {
"############",
// and so on
};
и соответственно изменить объявление функции
void mazeTraverse(char (*maze)[ size + 1 ])