арифметика указателя при использовании массива double

Итак, у меня есть указатель на массив значений типа double, и мне нужно использовать арифметику указателей для перехода к следующему месту в массиве, однако я не могу найти какой-либо достойной документации о том, как это сделать.

Это моя текущая строка, имейте в виду, что массив температур является массивом указателей, который выглядит следующим образом 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 ++. Это должно быть там.

1

Другие решения

Вам не нужно писать какие-либо указатели арифметики. Просто индекс в массив с [] оператор.

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], Это плохая практика программирования. Позор вашему ленивому учителю за то, что он не сказал вам, что делать и почему, когда это тоже плохая идея.

2

Мне нужно использовать арифметику указателя, к сожалению

Тогда любое выражение, такое как

temperaturesArray[ counter ]

можно заменить на

*(temperaturesArray + counter )

С массивами они функционально идентичны.

0
По вопросам рекламы [email protected]