如何返回指向我的二维数组的指针? C ++

时间:2016-03-23 07:51:34

标签: c++ arrays pointers

以下内容在类中声明为全局变量:

int mazeLayout[MAZEHEIGHT][MAZEWIDTH]
    ={{1,1,1,1},
      {1,0,0,0}};

然后我有一个公共函数,我想返回一个指向从另一个类/头文件中的另一个函数调用的数组的指针:

int *getMazeLayout(){return *mazeLayout};

我在这里收到错误"期待&#39 ;;'之前'}'令牌"

1 个答案:

答案 0 :(得分:0)

这里有许多小角落案例。

首先,一个2D int数组是而不是一个int ** - 后者应该是一个指向2D数组各行的指针数组。它们使用相同但不是同一种动物。

您可以这样做:

int mazeLayout[MAZEHEIGHT][MAZEWIDTH]
    ={{1,1,1,1},
      {1,0,0,0}};
int *pMazeLayout[] = { mazeLayout[0], mazeLayout[1] };

int **getMazeLayout(){return pMazeLayout;}   // ; before }

但是当你想要返回一个指向2D数组的指针时,确切的方法是:

typedef int MAZE[MAZEHEIGHT][MAZEWIDTH];

MAZE *getMazeLayout() {
    return &mazeLayout;
}

然后您可以使用:

MAZE *layout = getMazeLayout();
int val = (*layout)[1][2];

但它为您提供了额外的间接级别。

或者你可以只返回指向第一行的指针:

typedef int ROW[MAZEWIDTH];

ROW *getMazeLayout() {
    return mazeLayout;
}

然后您可以使用:

ROW *layout = getMazeLayout();
int val = layout[1][2];