Чтобы дать минималистичный ответ, единственное, что вы делаете неправильно, это то, что вы пытаетесь присвоить один массив другому массиву. Это действительно имеет отношение к любому «прохождению», как вы, кажется, верите (судя по предмету вашего вопроса).
(Да, я знаю, RHS в этом проблемном задании на самом деле не массив, но это другая история).
Помните, что в C ++ массивы не присваиваются и не копируемые . Например, этот код
int a[10], b[10] = {};
a = b;
плохо сформирован по той же причине. Вы не можете назначать массивы, независимо от того, где вы их "пропускаете" или нет.
Компилятор обычно отвечает сообщением об ошибке, которое включает указатели, что является следствием так называемого "распада типа массива", который другие уже упоминали в предыдущих ответах (читайте об этом).
Поскольку вы не можете назначать массивы, для копирования массива в этом случае вам необходимо сделать это вручную, элемент за элементом, как в
for (i = 0; i < 32; ++i)
for (j = 0; j < 32; ++j)
_road[i][j] = road[i][j];
или вы можете использовать 'memcpy' несколькими различными способами
1. memcpy(_road, road, 32 * 32 * sizeof **_road);
2. memcpy(_road, road, 32 * sizeof *_road);
3. memcpy(_road, road, sizeof _road);
Есть и другие альтернативные способы сделать это.
Обратите внимание, что вышеупомянутый "распад типа массива" имеет место в этом случае (как всегда), но он прозрачен для вас, то есть, если вы выполняете ручное копирование для каждого элемента, вам не нужно беспокоиться об этом все , как показано на приведенных выше примерах.