c++ - 如何返回静态数组指针

标签 c++ c arrays static

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

int* novoTabuleiro() {

    static int *novoTabuleiro[LINHAS][COLUNAS];

    //Some changes

    return novoTabuleiro;
}

然后我想做这样的事情:

int *tabuleiroJogador = novoTabuleiro();

上面的函数有什么问题。我收到的错误是“从不兼容的指针类型返回”。谢谢。

最佳答案

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

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

由于数组指针衰减,返回语句中的表达式 novoTabuleiro&novoTabuleiro[0] 含义相同。

novoTabuleiro[0] 的类型是“array [COLUNAS] of int”,即 int [COLUNAS]。所以指向它的指针是 int (*)[COLUNAS]

这意味着您的功能需要:

int (*func())[COLUNAS]  {

调用代码为:

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

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

关于c++ - 如何返回静态数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399577/

相关文章:

c++ - CMake编译时生成源码

c++ - 在 C++ 中扩展 Thrift 生成的对象

c++ - C++ 中的函数和函数指针

c - argc,argv 在 C 中的 Null 终止符中导致奇怪的行为

c - 如何读取下一行然后调用函数?

c - 重启后WinDBG调试

javascript - Typescript 中用于对数组进行自定义排序的比较器

C++:在 switch 语句内构造数组

c++ - std::array 求最大值函数

c++ - 复制包含 unique_ptr 的结构 vector