使用双精度数组时,指针算术

pointer arithemetic while using an array of double

本文关键字:指针 双精度 数组      更新时间:2023-10-16

所以我有一个指针的双精度数组,我需要做的是我们的指针算术移动到数组的下一个地方,但是我找不到任何像样的文档关于如何做到这一点。

这是我的当前行记住温度数组是一个指针数组看起来像这样double *temperaturesArray = new double[daysToPrompt];

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;

这将进入一个循环,也包括++ counter

这就是数组(和类似的结构,如std::vector)最常用的用法。

EDIT:如果你的老师在某个时候武断地要求你使用"指针算术",你有两个选择:

  • 注意,temperaturesArray[ counter ]直接转换为*( temperaturesArray + counter),所以你已经使用指针算术,只是不是以显式的方式。您也可以执行counter[ temperaturesArray ]向老师演示。

  • ++ temperaturesArray代替++ counter,用temperaturesArray[0]*temperaturesArray代替temperaturesArray[counter]。然而,这是糟糕的编程实践。真该为你懒惰的老师感到羞耻,因为他不告诉你该做什么,为什么要做,而这样做也是一个坏主意。

正确的数组元素是代码中的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++书籍中查找指针解引用。它应该在那里

我被要求使用指针算术悲哀

则任何表达式,如

temperaturesArray[ counter ]

可以用

代替
*(temperaturesArray + counter )

对于数组,它们在功能上是相同的