[英]How to return a static array pointer
我正在嘗試創建一個使用默認值創建二維數組的函數。 然后,該函數應返回該靜態數組的指針。
int* novoTabuleiro() {
static int *novoTabuleiro[LINHAS][COLUNAS];
//Some changes
return novoTabuleiro;
}
然后我想做這樣的事情:
int *tabuleiroJogador = novoTabuleiro();
上面的功能有什么問題。 我收到的錯誤是“從不兼容的指針類型返回”。 謝謝。
您的注釋表明該數組是一個二維的int數組:
static int novoTabuleiro[LINHAS][COLUNAS];
return novoTabuleiro;
由於數組指針衰減,return語句中的表達式novoTabuleiro
與&novoTabuleiro[0]
。
novoTabuleiro[0]
的類型是“int的數組[COLUNAS]”,即int [COLUNAS]
。 所以指向這個的指針是int (*)[COLUNAS]
。
這意味着您的功能需要:
int (*func())[COLUNAS] {
並且調用代碼將是:
int (*tabuleiroJogador)[COLUNAS] = func();
使用函數的不同名稱比使用函數中的數組名稱更容易混淆。
你最好使用std::array
static std::array<std::array<int, LINHAS>, COLUNAS> novoTabuleiro;
return novoTabuleiro;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.