数据类型冲突

Data type clash

本文关键字:冲突 数据类型      更新时间:2023-10-16
#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]。因此,您正在经历未定义的行为