如何返回静态数组指针

Hen*_*ias 3 c c++ arrays static

我正在尝试创建一个使用默认值创建二维数组的函数.然后,该函数应返回该静态数组的指针.

int* novoTabuleiro() {

    static int *novoTabuleiro[LINHAS][COLUNAS];

    //Some changes

    return novoTabuleiro;
}
Run Code Online (Sandbox Code Playgroud)

然后我想做这样的事情:

int *tabuleiroJogador = novoTabuleiro();
Run Code Online (Sandbox Code Playgroud)

上面的功能有什么问题.我收到的错误是"从不兼容的指针类型返回".谢谢.

M.M*_*M.M 5

您的注释表明该数组是一个二维的int数组:

static int novoTabuleiro[LINHAS][COLUNAS];
return novoTabuleiro;
Run Code Online (Sandbox Code Playgroud)

由于数组指针衰减,novoTabuleiroreturn语句中的表达式意味着相同&novoTabuleiro[0].

类型novoTabuleiro[0]是"int的数组[COLUNAS]",即int [COLUNAS].所以指向这个是int (*)[COLUNAS].

这意味着您的功能需要:

int (*func())[COLUNAS]  {
Run Code Online (Sandbox Code Playgroud)

并且调用代码将是:

int (*tabuleiroJogador)[COLUNAS] = func();
Run Code Online (Sandbox Code Playgroud)

使用函数的不同名称比使用函数中的数组名称更容易混淆.