我尝试为soduko游戏返回short [9] [9]
静态short [9] [9] getRandomBoard();

static short[9][9] getRandomBoard()
{
    short board[9][9];

    bla bla bla.....................
    bla bla bla.....................
    bla bla bla.....................

    return board;
}


我得到一个错误:
错误预期为';'

最佳答案

在您的示例中,board是从堆栈帧中分配的数组,一旦返回函数,该数组就会消失。如果要返回从堆中分配的连续数组,请执行以下操作:

static short(* getRandomBoard())[9] {
  short (*board)[9] = (short (*)[9]) malloc(9*9*sizeof(short));
  ...
  board[i][j] = 3;
  ...
  return board;
}


只需记住在处理完数组后使用free(board)即可避免泄漏。

更好的是,重新定义您的函数以将board作为参数传递(即,让调用者担心分配):

void getRandomBoard(short board[9][9]) {
   ....
}


这样,可以从堆栈(无需释放),堆或静态地分配board

如果您使用的是c ++,最好使用<array>

array<array<short,9>,9> getRandomBoard() {
   array<array<short,9>,9> board;
   ...
   board[i][j] = 3;
   ...
   return board;
}


如果您想坚持使用C,下面的链接将告诉您使用C表示2D数组的所有方法:

http://ezekiel.vancouver.wsu.edu/~cs330/lectures/linear_algebra/matrix/matrix.pdf

关于c++ - 静态short [9] [9] getRandomBoard();,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30490552/

10-13 08:09