2017-03-02 78 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]

相關問題