通过c语言窗口中的函数重置二维数组

问题描述 投票:-4回答:1

我想重置一个二维板,但我不知道如何返回一个指向数组的指针。我认为必须有一种更简单的方法来重置它,但找不到它。

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];
}
c arrays function pointers
1个回答
3
投票

不必返回任何东西,你正在使用指向数组的指针(数组衰减成指针)。因此,您所做的任何更改都将反映在被调用方中。如果你很好奇,那么当传递给函数时,知道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

© www.soinside.com 2019 - 2024. All rights reserved.