Поэтому у меня есть указатель на 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: инициализация с '{...}', ожидаемая для совокупного объекта
Любая идея, в чем проблема?
Назначьте указатель на первый элемент массива, как показано ниже.
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;
}
2D-массив не совпадает с массивом указателей. Вы не можете напрямую конвертировать один в другой.
Мне просто нужно было поставить() вокруг * ptr. Я понятия не имею, как это исправляется, но теперь я могу сделать ptr[1][2]
.