C-无法将1个参数从int转换为int[][4]

C-无法将1个参数从int转换为int[][4],c,arrays,function,C,Arrays,Function,我有一个C编译器的错误,我不能做任何事情,我在网上冲浪的解决方案,但未能解决这个问题 第一个错误:错误C2664:'int get_min_distance(int*[[4],int,int,int,int,int)]:无法将参数1从'int'转换为'int*[[4]' 第二个错误:IntelliSense:类型为“int”的参数与类型为“int(*)[4]”的参数不兼容。 两个错误都在一行中 代码: #include<stdio.h> #define inf 100000 int

我有一个C编译器的错误,我不能做任何事情,我在网上冲浪的解决方案,但未能解决这个问题

第一个错误:
错误C2664:'int get_min_distance(int*[[4],int,int,int,int,int)]:无法将参数1从'int'转换为'int*[[4]'

第二个错误:
IntelliSense:类型为“int”的参数与类型为“int(*)[4]”的参数不兼容。

两个错误都在一行中

代码:

#include<stdio.h>
#define inf  100000
int get_min_distance(int a[4][4], int b, int c, int d, int e);



int main(){
    int ras = 0;
    scanf("%d", &ras);

    int yal = 0;
    scanf("%d", &yal);

    int mabda = 0;
    scanf("%d", &mabda);

    int magsad = 0;
    scanf("%d", &magsad);


    int gf[4][4];
    gf[0][0] = 0;
    gf[0][1] = 1;
    gf[0][2] = inf;
    gf[0][3] = 1;
    gf[0][4] = 5;
    gf[1][0] = 9;
    gf[1][1] = 0;
    gf[1][2] = 3;
    gf[1][3] = 2;
    gf[1][4] = inf;
    gf[2][0] = inf;
    gf[2][1] = inf;
    gf[2][2] = 0;
    gf[2][3] = 4;
    gf[2][4] = inf;
    gf[3][0] = inf;
    gf[3][1] = inf;
    gf[3][2] = 2;
    gf[3][3] = 0;
    gf[3][4] = 3;
    gf[4][0] = 3;
    gf[4][1] = inf;
    gf[4][2] = inf;
    gf[4][3] = inf;
    gf[4][4] = 0;



    int distance = get_min_distance(gf [4][4], ras, yal, mabda, magsad);     //Error is here on "gf [4][4]"
    printf("%d", distance);


}


int get_min_distance(int gf[4][4], int ras, int yal, int mabda, int magsad){

    int min = inf;
    int i = ras;
    int A[5];

    if (mabda == magsad){
        return 0;
    }
    if (yal >= ras - 1){
        return inf;
    }
    for (int i = 0; i < ras; i++){
        if (gf[i][magsad] != 0 && gf[i][magsad] != inf){
            A[i] = gf[i][magsad] + get_min_distance(gf, ras, yal + 1, mabda, i);
            if (min>A[i] && A[i] > 0){
                min = A[i];
            }
        }
    }
    return min;
}
#包括
#定义inf 100000
距离(inta[4][4],intb,intc,intd,inte);
int main(){
int-ras=0;
scanf(“%d”和&ras);
int-yal=0;
scanf(“%d”&yal);
int-mabda=0;
scanf(“%d”和mabda);
int-magsad=0;
scanf(“%d”和&magsad);
int gf[4][4];;
gf[0][0]=0;
gf[0][1]=1;
gf[0][2]=inf;
gf[0][3]=1;
gf[0][4]=5;
gf[1][0]=9;
gf[1][1]=0;
gf[1][2]=3;
gf[1][3]=2;
gf[1][4]=inf;
gf[2][0]=inf;
gf[2][1]=inf;
gf[2][2]=0;
gf[2][3]=4;
gf[2][4]=inf;
gf[3][0]=inf;
gf[3][1]=inf;
gf[3][2]=2;
gf[3][3]=0;
gf[3][4]=3;
gf[4][0]=3;
gf[4][1]=inf;
gf[4][2]=inf;
gf[4][3]=inf;
gf[4][4]=0;
int distance=get_min_distance(gf[4][4],ras,yal,mabda,magsad);//错误出现在“gf[4][4]”上
printf(“%d”,距离);
}
int get_min_距离(int gf[4][4],int ras,int yal,int mabda,int magsad){
int min=inf;
int i=ras;
int A[5];
如果(mabda==magsad){
返回0;
}
如果(yal>=ras-1){
返回inf;
}
对于(int i=0;iA[i]&&A[i]>0){
min=A[i];
}
}
}
返回最小值;
}
调用
get\u min\u distance
函数时出错 有什么想法吗?
谢谢提供数组的名称作为参数

int distance = get_min_distance(gf, ras, yal, mabda, magsad);     
                               ^^^ 
此外,该数组的初始化也是无效的

int gf[4][4];
gf[0][0] = 0;
gf[0][1] = 1;
gf[0][2] = inf;
gf[0][3] = 1;
gf[0][4] = 5;
     ^^^
gf[1][0] = 9;
gf[1][1] = 0;
gf[1][2] = 3;
gf[1][3] = 2;
gf[1][4] = inf;
     ^^^
gf[2][0] = inf;
gf[2][1] = inf;
gf[2][2] = 0;
gf[2][3] = 4;
gf[2][4] = inf;
     ^^^
gf[3][0] = inf;
gf[3][1] = inf;
gf[3][2] = 2;
gf[3][3] = 0;
gf[3][4] = 3;
     ^^^
gf[4][0] = 3;
  ^^^
gf[4][1] = inf;
  ^^^
gf[4][2] = inf;
  ^^^
gf[4][3] = inf;
  ^^^
gf[4][4] = 0;
  ^^^^^^

因为索引的有效范围是
[0,3]
gf[4][4]
gf
数组的整数(超出范围)

只需传递
gf
变量:

get_min_distance(gf, ras, yal, mabda, magsad)
注意:这是错误的,也超出了范围,您的数组太小了
[4][4]
表示最大合法索引为
3
,否则您将覆盖一些您不拥有的内存:

gf[4][0] = 3;
gf[4][1] = inf;
gf[4][2] = inf;
gf[4][3] = inf;
gf[4][4] = 0;

(您的尺寸标注可能是指
[5][5]

只需通过
获取最小距离(gf、ras、yal、mabda、magsad)