2013-03-27 35 views
-1

所以我有一個指向雙數組的指針,我需要做的是我們指針算術移動到數組中的下一個位置,但是我找不到任何像樣的文檔如何做這個。指針arithemetic而使用雙數組

這是我當前行記住,氣溫陣列是一個指針數組,看起來像這樣double *temperaturesArray = new double[daysToPrompt];

cout << setw(10)<< counter + 1 << setw(10) << temperaturesArray + counter << "\370C" <<setw(10) << getFahrenheit(temperaturesArray + counter) <<"\370F"<< endl; 

回答

1

正確的數組元素是temperaturesArray + counter,就像你在代碼中一樣。不幸的是,這只是一個指針。

cout << setw(10) << counter + 1 << setw(10) << *(temperaturesArray + counter) << "\370C" << setw(10) << getFahrenheit(*(temperaturesArray + counter)) << "\370F" << endl; 

這是反直覺的,但:每當你想要的雙而非指針你要取消引用打印或指針。當你通過這個任務時只需索引數組;-)。

cout << setw(10) << counter + 1 << setw(10) << temperaturesArray[counter] << "\370C" << setw(10) << getFahrenheit(temperaturesArray[counter]) << "\370F" << endl; 

查找指針在任何像樣的C++的書提領。它應該在那裏。

2

你不需要寫任何指針運算。只需使用[]運算符索引到數組中。

cout << setw(10)<< counter + 1 
    << setw(10) << temperaturesArray[ counter ] << "\370C" 
    <<setw(10) << getFahrenheit(temperaturesArray[ counter ]) <<"\370F" 
    << endl; 

這將大大循環中,還包括在某些時候++ counter

這就是陣列(和類似結構如std::vector)最常用的方式。

編輯:如果在某些時候你的老師給使用任意的規定「指針運算,」你有兩個選擇:

  • 注意temperaturesArray[ counter ]直接轉化爲*(temperaturesArray + counter)所以你已經在使用指針算術,只是沒有明確的方式。你也可以做counter[ temperaturesArray ]向老師證明這一點。

  • ++ temperaturesArray代替++ counter和使用temperaturesArray[0]*temperaturesArray代替temperaturesArray[counter]。不過,這是糟糕的編程習慣。對你懶惰的老師感到羞恥,不告訴你該怎麼做,或者爲什麼,這樣做也是一個壞主意。

+0

Im需要使用指針算術可悲,我只是不知道該怎麼做 – 2013-03-27 02:14:39

+0

無法找到任何體面的文檔,似乎它不應該是那麼難 – 2013-03-27 02:15:11

0

林被要求使用指針運算可悲

然後如

temperaturesArray[ counter ] 

可以與

*(temperaturesArray + counter) 

隨着陣列來代替任何表達,這些是功能相同的。