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)
上面的功能有什么问题.我收到的错误是"从不兼容的指针类型返回".谢谢.
您的注释表明该数组是一个二维的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)
使用函数的不同名称比使用函数中的数组名称更容易混淆.