我尝试为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/