以下内容在类中声明为全局变量:
int mazeLayout[MAZEHEIGHT][MAZEWIDTH]
={{1,1,1,1},
{1,0,0,0}};
然后我有一个公共函数,我想返回一个指向从另一个类/头文件中的另一个函数调用的数组的指针:
int *getMazeLayout(){return *mazeLayout};
我在这里收到错误"期待&#39 ;;'之前'}'令牌"
答案 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];