数据类型冲突
Data type clash
#include <iostream>
#include <iomanip>
using namespace std;
void reverseOrder (double []);
int main() {
const int size = 4;
double array[size] = {1.2, 6.7, -12.45, 34.9};
cout << "Forwards:" << " " << endl;
for (int index = 0; index < size; index++) {
cout << array[index] << endl;
}
// Display in reversed order.
cout << "Backwards: " << endl;
reverseOrder(array[size]);
return 0;
}
void reverseOrder(double array[]) {
const int size = 10;
int j;
double reverseOrder[size];
double temp = 0;
for (int i = 0, j = size - 1; i < (size / 2); i++, j--) {
temp = reverseOrder[i];
reverseOrder[i] = array[j];
reverseOrder[j] = temp;
}
for (int reverse = 0; reverse < size; reverse++) {
cout << array[reverse] << endl;
}
}
错误 C2664:"无效反向顺序(双精度 [](":无法将参数 1 从"双精度"转换为"双精度 []"错误在这里 ---> 反向顺序(数组[大小](;
您正在调用函数reverseOrder(double[])
,array[size]
作为参数,该参数只是数组(*(的一个元素。所以你传递了一个双精度,但该函数需要一个数组。
在您的情况下,您应该使用 reverseOrder(array)
调用该函数。
(*(在这种情况下,它甚至不是一个元素,因为它指向最后一个元素之后的元素,因为第一个元素由 0 访问,因此通过 4 您实际上将访问第 5 个元素(感谢 drescherjm 指出这一点(
您的特定问题(仅是我们观察到的第一个问题(是,您正在尝试将单个double
传递给期望double
数组的函数。这是因为
array[index]
返回与给定索引关联的数组的值(您应该像 reverseOrder(array);
一样调用它(。也就是说,只要索引在允许的范围内,它就会返回此值。这里的情况并非如此,因为 array[size] 是数组最后一个元素的过去一个。最后一个是索引数组[size-1]。因此,您正在经历未定义的行为。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- C++哈希表 - 如何解决自定义数据类型作为键的unordered_map冲突?
- CUDA:最大限度地减少大型数据类型的银行冲突
- 限制数据类型属性冲突-ODBC with Access Database
- 数据类型的浅层复制与堆对象和销毁冲突
- 数据类型冲突
- 在托管c#应用程序的非托管c++ Dll调用中,如何处理数据类型之间的冲突
- oraclepro-c-数据类型在pro*c和c++中存在冲突