2011-09-12 79 views
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

無論你做什麼,解決方案是**不**添加演員!該警告的措辭不當...我認爲這應該只是說:「警告:指定一個指向整數」 ommiting「投」 – pmg

+0

不使用幻數字「J = 3-1」 –

回答

5

您在訪問元素時錯過了一個索引。 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是一個2D整數數組。

+1

+1:您訪問2D數組就好像它是一維數組。這樣做會給你一個指針而不是數組的一個元素。 –

1

該警告是從周圍指針整數不安全轉換在賦值語句中的一個。它可以是你的代碼中的任何語句。您應該提供變量類型聲明以檢測警告來自何處。

相關問題