【问题标题】:C++ Passing pointer to multi-dimensional arraysC ++将指针传递给多维数组
【发布时间】:2014-01-31 09:00:26
【问题描述】:

所以我有一个指向二维数组的指针,如下所示:

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:聚合需要使用“{...}”进行初始化 对象

知道问题出在哪里吗?

【问题讨论】:

  • 这个问题有答案here

标签: c++ arrays pointers multidimensional-array


【解决方案1】:

将指针分配给数组的第一个元素,如下所示

int (*ptr)[5] = board;

注意:指针声明中的列大小[5]应等于原始二维数组列大小[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;
}

【讨论】:

    【解决方案2】:

    二维数组与指针数组不同。您不能直接将一个转换为另一个。

    【讨论】:

      【解决方案3】:

      我只需要将 () 放在 *ptr 周围。我不知道这是如何解决的,但现在我可以做到ptr[1][2]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 2014-12-31
        • 2017-04-18
        • 2018-07-10
        • 2016-04-27
        • 2019-03-28
        相关资源
        最近更新 更多