#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:'void reverseOrder(double [])':无法将参数1从'double'转换为'double []' 错误在这里---&gt; reverseOrder(数组[大小]);
答案 0 :(得分:0)
您正在使用reverseOrder(double[])
作为参数调用函数array[size]
,它只是数组(*)的一个元素。所以你传递的是double,但函数需要一个数组。
在您的情况下,您应该使用reverseOrder(array)
调用该函数。
(*)在这种情况下它甚至不是一个元素,因为它指向之后的元素,因为第一个元素被0访问,因此第4个元素实际访问第5个元素元素(感谢drescherjm指出它)
答案 1 :(得分:0)
您的特定问题(我们可以观察到的第一个问题)是您尝试将单个double
传递给期望double
的数组的函数。这是因为
array[index]
返回与给定索引关联的数组的值(您应该像reverseOrder(array);
一样调用它)。也就是说,只要索引在允许的范围内,它就会返回此值。这不是这种情况,因为array [size]是数组最后一个元素之后的一个。最后一个是索引数组[size-1]。因此,您遇到了未定义的行为。