数据类型冲突

时间:2014-10-28 22:42:23

标签: c++

#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(数组[大小]);

2 个答案:

答案 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]。因此,您遇到了未定义的行为