运行 代码时出错 - 从整数生成指针而不进行强制转换

Error while running code - makes pointer from integer without a cast

我正在尝试 运行 我的代码,但我遇到了 5 个错误,而且都是同一类错误。 第一个是:

note: expected 'int (*)[3]' but argument is of type '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;
   }

另一个是:

error: passing argument 1 of 'isNeighbourClose' makes pointer from integer without a cast

例如,在我的这部分代码中

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;
}

我检查了几次,找不到问题出在哪里。知道我错在哪里吗?

提前致谢。

当您将 mat[N][M] 传递给 isNeighbourClose 时,您并没有像您认为的那样传递二维数组。您在 NM 列传递 mat 的单个元素。

该函数需要一个二维数组,因此传递整个数组:

m=isNeighbourClose(mat, i, j, i+a, j+b);

编辑:

当您有这样的声明时:

int mat[N][M];

您要指定数据类型和(在本例中)数组的维度,即 "mat is an array of N by M elements"。这不同于上面提到的表达式,其中使用了mat