[英]C - can not convert 1 argument from int to int[][4]
我的C編譯器發生錯誤,無法執行任何操作,我在網上沖浪尋求解決方案,但未能解決問題
第一個錯誤: 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
函數時發生錯誤知道嗎? 謝謝
提供數組名稱作為參數
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]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.