我试图通过以下方式调用函数: 在int main之前:
int matrixCheck(int matrix[][LEN] , int j , int i);
主要打电话:
flag = matrixCheck(matrix[][LEN] , int j , int i);
功能本身:
int matrixCheck(int array[][LEN] , int j , int i)
我收到以下错误error: syntax error before ']' token
(主要是来电)
在通话之前没有错误,因为它之前只有以下代码。
int matrix[][LEN] = {{16,2,3,13},{5,11,10,8},{9,7,6,12},{4,14,15,1}};
int i = 0, j = 0;
int flag = 0;
任何人都知道为什么会这样?
答案 0 :(得分:1)
编译器说存在语法错误,因为存在语法错误。
调用matrixCheck
的第一个参数应该是matrix
,没有额外的[]
和其他垃圾。
还应删除第二个和第三个参数之前的垃圾int
。
答案 1 :(得分:1)
电话应该只是:
flag = matrixCheck( matrix, j, i ) ;
您不在函数调用中指定参数的数据类型或数组维度;仅在定义或声明中。
答案 2 :(得分:0)
我不确定这个函数是做什么的,所以我会让它打印出数组中第一个组的第一个值,然后它将打印j和i的值。
函数退出后,将打印flag的值。
我不确定您是否知道如何使用调试器,但如果不知道,那么至少使用printf语句打印出数字变量,以便了解它们的处理方式。看我的代码:
#include <stdio.h>
#define LEN 50
int matrixCheck(int array[][LEN] , int j , int i){
printf("array[0][0]=%d, i=%d, j=%d\n",array[0][0],i,j);
return 1;
}
int main(){
int matrix[][LEN] = {{16,2,3,13},{5,11,10,8},{9,7,6,12},{4,14,15,1}};
int i = 17, j = 18;
int flag = 0;
flag = matrixCheck(matrix,j,i);
printf("flag=%d\n",flag);
return 0;
}
答案 3 :(得分:-3)
我不知道该功能是做什么的,但您可以尝试使用与int array[][]
相同的int **array
- &gt;所以是二维数组的指针。