0

私のコードを実行しようとしていますが、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; 
} 

私はこれを何度か踏んで、どこに問題があるのか​​分かりません。私が間違っているアイデアは?

ありがとうございます。

+0

この関数のプロトタイプはどこかに浮かんでいますか? –

+0

こんにちは。どちらの機能について話していますか? – FlyGuy

+0

'isCellExtreme'の呼び出しを' m = isNeighbourClose(mat、i、j、i + a、j + b); 'に変更し、それがうまくいくかどうか確認してください。 – bruceg

答えて

1

mat[N][M]isNeighbourCloseに渡すと、あなたが思っているように2D配列を渡すことはありません。行Nの列Mmatの単一要素を渡しています。

機能は、2次元配列は、その全体の配列を渡す見込ん:

m=isNeighbourClose(mat, i, j, i+a, j+b); 

EDIT:

あなたはこのような宣言持っている場合:あなたがしている

int mat[N][M]; 

をデータ型と(この場合は)配列の次元を指定します。つまり、「matはM by N要素の配列です」と表示されます。これは、matが使用されている上記のの式とは異なります。

+0

私は今理解しています。ありがとうございました! – FlyGuy

+0

待ってください。だからいつ私はマット[N] [M]を宣言し、いつ[N] [M]を省略するのですか? – FlyGuy

+0

@FlyGuy私の編集を参照してください。 – dbush

関連する問題