2017-03-02 343 views
-1

我有一个C编译器的错误,我无法做任何事情,我上网浏览解决方案,但未能解决问题C - 无法将1个参数从int转换为int [] [4]

第一个错误:error C2664: 'int get_min_distance(int *[][4],int,int,int,int)' : cannot convert argument 1 from 'int' to 'int *[][4]'

二错误:IntelliSense: argument of type "int" is incompatible with parameter of type "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; 
} 

错误,当我们调用get_min_distance功能 任何想法会发生? 感谢

+1

只是通过'get_min_distance(GF,RAS, yal,mabda,magsad)' –

回答

2

供应数组作为参数的名称

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]

1

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; 

(你可能意味着你的dimensionning [5][5]

相关问题