我正在尝试运行我的代码但是我得到了5个错误,而且它们都是同一类型。 第一个是:
注意:预期'int(*)[3]'但参数的类型为'int'
例如,在我的代码的这一部分(它指出你在这里看到这个词的行
HERE-> int isNeighbourClose(int mat[N][M], int i, int j, int a, int b){
int m;
m=calcDistance(mat[i][j], mat[a][b]);
if(m<=1)
{
return 1;
}
return 0;
}
另一个是:
错误:传递'isNeighbourClose'的参数1使得整数指针没有强制转换
例如,我的代码的这一部分
int isCellExtreme(int mat[N][M], int i, int j){
int a, b;
int m;
for(a=-1;a<=1;a++)
{
if((i+a>=0) && (i+a<=N))
{
for(b=-1;b<=1;b++)
{
if((j+b>=0) && (j+b<=M))
{
if((a!=0)||(b!=0))
{
HERE-> m=isNeighbourClose(mat[N][M], i, j, i+a, j+b);
if(m)
{
return 0;
}
}
}
}
}
}
return 1;
}
我经历了几次,但找不到问题所在。知道我哪里弄错了吗?
提前致谢。
答案 0 :(得分:1)
当您将mat[N][M]
传递给isNeighbourClose
时,您并没有像您认为的那样传递2D数组。您在行mat
列N
处传递M
的单个元素。
该函数需要一个2D数组,因此传递整个数组:
m=isNeighbourClose(mat, i, j, i+a, j+b);
编辑:
如果您有声明,请执行以下操作:
int mat[N][M];
您指定数据类型和(在本例中)数组的维度,即它表示“mat是N个M个元素的数组”。这与上面提到的使用mat
的表达式不同。