2016-11-05 45 views
-1

我要重寫使用指針&動態數組如何通過使用地址將值分配給二維數組?

但對於2-d陣列的一部分,這裏有一些問題的程序

這是原來的代碼:

for (int index = 0; index < 12; index++) 
    { 
    sorted[index][0] = sum[index]; 
    sorted[index][1] = index+1; 
} 

我重寫它是這樣的:

for (int index = 0; index < 12; index++) 
{ 
    *(*sorted+index) = *(sum+index); 
    *((*sorted+index)+1) = index + 1; 
} 

我試過了,問題發生在第一部分的分配 *(*sorted+index)*((*sorted+index)+1)

問題是怎麼回事?有沒有錯誤代碼,該descrition就是:

異常在ass2 Q3.exe在0x00F47379拋出:0000005:訪問 衝突寫入位置0xCE13E05C。未處理的異常在 0x00F47379在ass2 Q3.exe:0xC0000005:訪問衝突寫入 位置0xCE13E05C。

回答

0

你有這兩條線的一個問題:

*(*sorted+index) = *(sum+index); 
*((*sorted+index)+1) = index + 1; 

您需要通過index移動sorted指針偏移量,這樣做,你應該寫信(sorted + index)你可以得到存儲在該值地址由*(sorted + index)然後得到*(*(sorted + index))的第一個元素。同樣的事情也必須適用於第二行了,所以這2行應該是:

*(*(sorted+index)) = *(sum+index); 
*(*(sorted+index)+1) = index + 1; 

我建議你閱讀更多關於指針運算。

相關問題