如何 return 静态数组指针

How to return a static array pointer

我正在尝试创建一个函数来创建具有默认值的二维数组。然后,该函数应该 return 该静态数组的指针。

int* novoTabuleiro() {

    static int *novoTabuleiro[LINHAS][COLUNAS];

    //Some changes

    return novoTabuleiro;
}

然后我想做这样的事情:

int *tabuleiroJogador = novoTabuleiro();

上面的函数有什么问题。我收到的错误是 "return from incompatible pointer type"。谢谢

您的评论表明该数组是一个二维整数数组:

static int novoTabuleiro[LINHAS][COLUNAS];
return novoTabuleiro;

由于数组指针衰减,return 语句中的表达式 novoTabuleiro&novoTabuleiro[0].

的含义相同

novoTabuleiro[0]的类型是"array [COLUNAS] of int",即int [COLUNAS]。所以指向这个的指针是 int (*)[COLUNAS].

这意味着您的函数需要是:

int (*func())[COLUNAS]  {

调用代码为:

int (*tabuleiroJogador)[COLUNAS] = func();

与函数内的数组名称相比,为函数使用不同的名称会更容易混淆。

你最好使用 std::array

static std::array<std::array<int, LINHAS>, COLUNAS> novoTabuleiro;
return novoTabuleiro;