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);
}
当在主函数之外编写该函数时,我对其的定义与在主函数中的定义完全相同。
bool canReach(char board[][], int i, int j){
//Functions purpose
}
当我尝试构建该程序时,出现两次此错误,并且该程序无法构建:
error: array has incomplete element type 'char[][]'
bool canReach(char board[][], int i, int j)
                        ^
请注意,我试图将整个数组传递给函数,而不仅仅是单个值。我可以做什么来解决这个问题?如果它不必使用指针,我将不胜感激,因为我发现它们非常令人困惑。另外,我试图省略一些我认为不重要的东西,但我可能错过了一些我需要的东西,或者保留了我不需要的东西。感谢您花时间帮助这位新手程序员!
您可以将数组作为函数参数传递,并定义其大小。
bool canReach(char board[ROWS][COLS], int i, int j);
当大小未知时,指针就是方法。
bool canReach(char* board, int i, int j);
你应该知道,数组!=指针,但指针可以存储数组的地址。