2013-03-27 105 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) 

随着阵列来代替任何表达,这些是功能相同的。