将 2D char 数组传递给 C 中的函数

Saa*_*ena 5 c arrays multidimensional-array

我是一名初级程序员,对将二维数组传递给函数感到困惑。我认为这可能只是一个简单的语法问题。我一直在寻找答案,但我发现的任何答案似乎都没有帮助,或者远远超出了我的水平,让我无法理解。

我将主函数中的数组和函数标识为,并在初始化它之后,尝试调用它:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int const ROWS = 8;
int const COLS = 8;

int main(int argc, char** argv) {

char board[ROWS][COLS];

bool canReach(char board[][], int i, int j);

//initialize array

//values of i and j given in a for loop

canReach(board, i, j);

return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

当在主函数之外编写该函数时,我对其的定义与在主函数中的定义完全相同。

bool canReach(char board[][], int i, int j){
//Functions purpose
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建该程序时,出现两次此错误,并且该程序无法构建:

error: array has incomplete element type 'char[][]'
bool canReach(char board[][], int i, int j)
                        ^
Run Code Online (Sandbox Code Playgroud)

请注意,我试图将整个数组传递给函数,而不仅仅是单个值。我可以做什么来解决这个问题?如果它不必使用指针,我将不胜感激,因为我发现它们非常令人困惑。另外,我试图省略一些我认为不重要的东西,但我可能错过了一些我需要的东西,或者保留了我不需要的东西。感谢您花时间帮助这位新手程序员!

You*_*uka 4

您可以将数组作为函数参数传递,并定义其大小。

bool canReach(char board[ROWS][COLS], int i, int j);
Run Code Online (Sandbox Code Playgroud)

当大小未知时,指针就是方法。

bool canReach(char* board, int i, int j);
Run Code Online (Sandbox Code Playgroud)

你应该知道,数组!=指针,但指针可以存储数组的地址。