运行 代码时出错 - 从整数生成指针而不进行强制转换
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
时,您并没有像您认为的那样传递二维数组。您在 N
行 M
列传递 mat
的单个元素。
该函数需要一个二维数组,因此传递整个数组:
m=isNeighbourClose(mat, i, j, i+a, j+b);
编辑:
当您有这样的声明时:
int mat[N][M];
您要指定数据类型和(在本例中)数组的维度,即 "mat is an array of N by M elements"。这不同于上面提到的表达式,其中使用了mat
。
我正在尝试 运行 我的代码,但我遇到了 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
时,您并没有像您认为的那样传递二维数组。您在 N
行 M
列传递 mat
的单个元素。
该函数需要一个二维数组,因此传递整个数组:
m=isNeighbourClose(mat, i, j, i+a, j+b);
编辑:
当您有这样的声明时:
int mat[N][M];
您要指定数据类型和(在本例中)数组的维度,即 "mat is an array of N by M elements"。这不同于上面提到的表达式,其中使用了mat
。