C++ 数据类型冲突 #包括 #包括 使用名称空间std; 无效反向顺序(双[]); int main(){ 常数int size=4; 双数组[大小]={1.2,6.7,-12.45,34.9}; cout
您正在调用函数C++ 数据类型冲突 #包括 #包括 使用名称空间std; 无效反向顺序(双[]); int main(){ 常数int size=4; 双数组[大小]={1.2,6.7,-12.45,34.9}; cout,c++,C++,您正在调用函数reverseOrder(double[]),使用array[size]作为参数,该参数只是数组(*)的一个元素。因此,您正在传递一个double,但函数需要一个数组 在您的情况下,应该使用reverseOrder(array)调用函数 (*)在这种情况下,它甚至不是一个元素,因为它指向最后一个元素之后的,因为第一个元素由0访问,因此由4访问,您将实际访问第五个元素(多亏drescherjm指出了这一点)您的特定问题(仅是我们观察到的第一个问题)您试图将一个double传递给一个需
reverseOrder(double[])
,使用array[size]
作为参数,该参数只是数组(*)的一个元素。因此,您正在传递一个double,但函数需要一个数组
在您的情况下,应该使用reverseOrder(array)
调用函数
(*)在这种情况下,它甚至不是一个元素,因为它指向最后一个元素之后的,因为第一个元素由0访问,因此由4访问,您将实际访问第五个元素(多亏drescherjm指出了这一点)您的特定问题(仅是我们观察到的第一个问题)您试图将一个double
传递给一个需要double
s数组的函数。这是因为
#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;
}
}
返回与给定索引关联的数组的值(您应该像
reverseOrder(array);
)那样调用它)。也就是说,只要索引在允许的范围内,它就会返回该值。这里不是这种情况,因为数组[size]比数组的最后一个元素晚一个。最后一个是索引数组[size-1]。因此,你正在经历未定义的行为。啊。这是如此鲁莽、粗鲁、无礼和幼稚,以至于很有趣。是什么让你认为你会在一个甚至没有被问到的问题上得到答案?专业建议:至少先看看常见问题解答……为什么它不想编译?使用--force编译directiveInmain()@DanielAwbrey:如果你愿意花时间陈述一个实际的问题,并且通常会花更多的时间来形成一个整洁的文本,而不是不看预览就吐出一堆文本,那么你会吸引更多的ppl来为你写出一个好的答案。这只是数组的一个元素,实际上是数组之外的一个元素/UB,因为c/c++使用基于0的索引。正确。我将相应地编辑答案。
array[index]