所以我有一个指向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;
我正在尝试关注this example。但由于某种原因,我收到了错误:
IntelliSense:初始化为'{...}'期望聚合 对象
知道问题是什么吗?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
2D数组与指针数组不同。你不能直接将一个转换为另一个。
答案 2 :(得分:0)
我只需要在* ptr周围放置()。我不知道这是如何解决的,但现在我可以做ptr[1][2]
。