C ++将指针传递给多维数组

时间:2014-01-31 09:00:27

标签: c++ arrays pointers multidimensional-array

所以我有一个指向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:初始化为'{...}'期望聚合   对象

知道问题是什么吗?

3 个答案:

答案 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]

相关问题