我想重置一个二维板,但我不知道如何返回一个指向数组的指针。我认为必须有一种更简单的方法来重置它,但找不到它。
char reset_board(int rows,int columns,char board[rows][columns])
{
for(int i = 0;i<rows;i++)
{
for(int j=0;j<columns;j++)
{
board[i][j] == ' ';
}
}
return &board[0][0];
}
不必返回任何东西,你正在使用指向数组的指针(数组衰减成指针)。因此,您所做的任何更改都将反映在被调用方中。如果你很好奇,那么当传递给函数时,知道2d数组char s[ROW][COL]
衰变成char (*)[COL]
。
void reset_board(int rows,int columns,char board[rows][columns])
{
....
}
这有效。
更简单的方法是使用memset
memset(board,' ',sizeof board);
要么
memset (board, ' ', rows * columns * sizeof **board);
但这仅适用于声明为char board[ROW][COL]
的范围。
此外return &board[0][0];
这是返回char
的地址所以它将是char*
类型而不是char
。