所以我有一个指向双数组的指针,我需要做的是使用指针算法移动到数组中的下一个位置,但是我找不到任何关于如何执行此操作的文档。
这是我目前的行,请记住,温度数组是一个类似于double *temperaturesArray = new double[daysToPrompt];
的指针数组
cout << setw(10)<< counter + 1 << setw(10) << temperaturesArray + counter << "\370C" <<setw(10) << getFahrenheit(temperaturesArray + counter) <<"\370F"<< endl;
答案 0 :(得分: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]
。不过,这是糟糕的编程习惯。对你懒惰的老师感到羞耻,因为他没有告诉你做什么,或者为什么这样做也是一个坏主意。
答案 1 :(得分: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 :(得分:0)
我需要遗憾地使用指针算法
然后是任何表达,例如
temperaturesArray[ counter ]
可以替换为
*(temperaturesArray + counter )
对于数组,这些在功能上是相同的。