如何 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;
我正在尝试创建一个函数来创建具有默认值的二维数组。然后,该函数应该 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;