C ++ Передача указателя на многомерные массивы

0

Поэтому у меня есть указатель на 2D-массив, например:

int board[3][5] = { 3, 5, 2, 2, 1, 3, 4, 34, 2, 2, 3, 4, 3, 223, 923 };
int* ptr[sizeof(board[0]) / sizeof(board[0][0])] = board;

Я пытаюсь следовать этому примеру. Но почему-то я получаю сообщение об ошибке:

IntelliSense: инициализация с '{...}', ожидаемая для совокупного объекта

Любая идея, в чем проблема?

  • 1
    На этот вопрос есть ответ здесь
Теги:
arrays
multidimensional-array
pointers

3 ответа

1
Лучший ответ

Назначьте указатель на первый элемент массива, как показано ниже.

int (*ptr)[5] = board;

Примечание. Размер столбца [5] в объявлении указателя должен быть равен размеру столбца исходного размера 2 размера [5]. Объявление размера строки [3] является необязательным.

int main() {

    int board[3][5] = { 3, 5, 2, 2, 1, 3, 4, 34, 2, 2, 3, 4, 3, 223, 923 };

    /*
    // 3 Rows 5 Columns Matrix
       int board[3][5] = { {3, 5, 2, 2, 1 },
                           {3, 4, 34, 2, 2 },
                           {3, 4, 3, 223, 923}
                         };
   */

   // Assign pointer to the first element of the array
   int (*ptr)[5] = board;

   for(int i=0; i< (3*5); i++) {
       std::cout<<(*ptr)[i]<<std::endl;
    }

   return 0;
}
0

2D-массив не совпадает с массивом указателей. Вы не можете напрямую конвертировать один в другой.

0

Мне просто нужно было поставить() вокруг * ptr. Я понятия не имею, как это исправляется, но теперь я могу сделать ptr[1][2].

Ещё вопросы

Сообщество Overcoder
Наверх
Меню