2011-09-12 6 views
2

2次元配列の要素をソートしようとしていますが、kに値を代入するとこのエラーが発生します。警告:代入なしでポインタから整数を代入する

"警告:割り当ては、キャストのないポインタから整数になります"。

どうして私はそれを解決することができますか?

for(i=1;i<3;++i) 
    { 
     for(j=3-1;j>=1;--j) 
      { 
       if(a[j-1]>a[j]) 
        { 
         k = a[j-1]; 
          a[j-1]=a[j]; 
         a[j] = k; 
        } 
      } 
    } 
+0

i、j、a、kのデータ型は何ですか? –

+0

何をしても、解決策は**キャストを追加しない**です!警告は貧弱な言葉です...私はそれがちょうど言ったべきであると思います: "警告:整数へのポインタを割り当てる" – pmg

+0

魔法の数字を使用しないでください "j = 3-1" –

答えて

5

要素にアクセスする際に1つのインデックスが見つかりませんでした。 a[j], a[j-1]は、すべての場所でa[i][j], a[i][j-1]にする必要があります。 a[i]は、2D配列のi行目の最初の要素へのポインタです。 a[i][j]は、インデックスi, jの要素です。

注:質問には指定されていませんが、i, j, kは整数で、aは2次元整数配列です。

+1

+1: 1D配列のように2D配列にアクセスします。これを行うと、配列の要素ではなくポインタが得られます。 –

1

警告は、割り当てステートメントの1つで、ポインタから整数への安全でない変換に関するものです。それは、あなたのコード内のステートメントのいずれかである可能性があります。警告がどこから来るのかを検出するには、変数型宣言を提供する必要があります。

関連する問題