【发布时间】:2023-03-06 07:36:01
【问题描述】:
我是一名初级程序员,对将二维数组传递给函数感到困惑。我认为这可能只是一个简单的语法问题。我一直在寻找答案,但我发现似乎没有任何帮助,或者超出我的水平而无法理解。
我将main函数中的数组和函数标识为,初始化后尝试调用:
#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)
^
请注意,我试图将整个数组传递给函数,而不仅仅是单个值。我能做些什么来解决这个问题?如果它不必使用指针,我将不胜感激,因为我发现它们很混乱。此外,我试图遗漏一些我认为不重要的东西,但我可能错过了我需要的东西,或者保留了我不需要的东西。感谢您花时间帮助这位初级程序员!
【问题讨论】:
-
在 C 中,常量实际上是程序员保证不会改变的变量。对于诸如您的数组大小,将
#define它们作为宏是更好的方法。请注意,这与 C++ 不同。 -
请正确格式化您的代码。
-
错误是指第二个
[]的数组(事物有多大)。因此,您必须至少为第一个[]指定数组的大小。或者,您可以传递一个指向 0,0 和 2 个大小的指针。 -
数组索引的类型应该是
size_t。
标签: c arrays multidimensional-array