2014-02-27 47 views
0

無論我如何嘗試,我真的不能通過這個問題。正如你所看到的,我正在使用2維數組中的指針進行排序。排序2維數組使用指針

int i,temp; 
int *ptr; 
int arry[1][8]={12,13,9,1,8,9,4,3}; 
int col,row; 
cout<<"First: "; 
for(i = 0; i< 8;i++){ 
cout<<" "<<arry[0][i]; 
} 

cout<<endl; 

for(col=0;col < 8;col++){ 
    for(row=col+1;row <= 8;row++){ 
     if(*(*(arry + 0) + col) > *(*(arry + 0) + row)){ 
      temp= *(*(arry + 0) + col); 
      *(*(arry + 0) + col) = *(*(arry + 0) + row); 
      *(*(arry + 0) + row) = temp; 
     } 
    } 
} 

cout<<"Output:"; 
for(i=0;i<8;i++) 
    cout<<" "<<arry[0][i]; 
+0

不是不一樣*(*(樣品+ I)+ j)的? – Shulz

+0

你是對的,我有一個小小的錯字,並且在我仍然可以編輯帖子時沒有注意到它。所以:我認爲你真正需要做的是這個:'*(*(arry + 0)+ col)'而不是'*(* arry + 0)+ col'。 (你也有一些其他的索引問題,但是應該包括重要的部分,問題是,前綴運算符(比如dereference'*')比中綴運算符(比如'+')更高優先級。) – Xarn

+0

I新的編程,但我看到的是temp不是一個數組,然後我在temp中分配一個2維數組。所以我認爲這可能是問題所在。只是我的想法。我真的被困在這個部分。 – Shulz

回答

0

它看起來像你只是存儲在數組中的值,而不是指針。

改變符號,使現有的循環更傳統的陣列處理,我們將有這樣的事情可能是更具可讀性。

if(arry[0][col]) > arry[0][row]){ 
    temp=arry[0][col]; 
    arry[0][col] = arry[0][row]; 
    arry[0][row] = temp; 
} 

如果你想使用指針符號,你可以用*(*(ARRY + I)+ j)的替代ARRY [i] [j]但是這是同樣的事情。你是否希望通過指針符號來獲得額外的東西?

+0

嗯,我知道我使用2維數組,但我只是把0放在行上。但我想用指針交換這些值 – Shulz