使用双精度数组时,指针算术
pointer arithemetic while using an array of double
所以我有一个指针的双精度数组,我需要做的是我们的指针算术移动到数组的下一个地方,但是我找不到任何像样的文档关于如何做到这一点。
这是我的当前行记住温度数组是一个指针数组看起来像这样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 )
对于数组,它们在功能上是相同的
- 将指针数组分配给双精度
- f 是指向函数的指针,该函数采用 int,并返回指向不带任何内容并返回双精度的函数的指针
- C++ 在具有数组成员的类上无效指针/双精度释放
- 为什么可以使用指针创建新结构,但不能以相同的方式创建双精度?
- 将 Int 指针分配给双精度变量
- 错误:类型"类特征::张量<双精度,3>"参数提供给"删除",预期指针
- 如何将双精度转换为浮点指针
- Xcode 错误:指针和双精度之间的比较
- 复制开销:双精度与指针
- 对双精度和指针对的向量进行排序
- 函数中指向静态双精度的指针数组C++
- 将字符指针强制转换为双精度数组/取消引用
- 地图和unordered_map包含指向双精度的指针
- 用于双精度和指针C++的容器
- c++sizeof运算符-指向双精度的指针
- 通过指针初始化常量矩阵<双精度,0,80>(来自 Dlib)
- 转换/解析指针字符串和双精度
- 为什么我不能将一个类型(比如双精度)的变量的地址分配给 int 类型的指针?
- 使用双精度数组时,指针算术
- 如何正确地删除双精度数组通过指针后,指针已被迭代