【问题标题】:How to return a static array pointer如何返回静态数组指针
【发布时间】:2015-02-08 21:29:47
【问题描述】:

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

int* novoTabuleiro() {

    static int *novoTabuleiro[LINHAS][COLUNAS];

    //Some changes

    return novoTabuleiro;
}

然后我想做这样的事情:

int *tabuleiroJogador = novoTabuleiro();

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

【问题讨论】:

  • pointer to a static array.. 那在哪里?
  • 我忘记了static关键字,但错误一直存在。
  • 你肯定想要一个指向 int 的指针数组(不是一个 int 数组)吗?
  • 要返回一个静态数组,首先声明一个静态数组。
  • 那个函数看起来像是变相的全局变量。

标签: c++ c arrays static


【解决方案1】:

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

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();

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

【讨论】:

    【解决方案2】:

    你最好使用std::array

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2022-11-21
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多