Итак, у меня есть указатель на массив значений типа double, и мне нужно использовать арифметику указателей для перехода к следующему месту в массиве, однако я не могу найти какой-либо достойной документации о том, как это сделать.
Это моя текущая строка, имейте в виду, что массив температур является массивом указателей, который выглядит следующим образом double *temperaturesArray = new double[daysToPrompt];
cout << setw(10)<< counter + 1 << setw(10) << temperaturesArray + counter << "\370C" <<setw(10) << getFahrenheit(temperaturesArray + counter) <<"\370F"<< endl;
Правильный элемент массива 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 ++. Это должно быть там.
Вам не нужно писать какие-либо указатели арифметики. Просто индекс в массив с []
оператор.
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]
, Это плохая практика программирования. Позор вашему ленивому учителю за то, что он не сказал вам, что делать и почему, когда это тоже плохая идея.
Мне нужно использовать арифметику указателя, к сожалению
Тогда любое выражение, такое как
temperaturesArray[ counter ]
можно заменить на
*(temperaturesArray + counter )
С массивами они функционально идентичны.