gpt4 book ai didi

c++ - 错误 : invalid types 'double*[double]' for array subscript

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:41 25 4
gpt4 key购买 nike

我正在尝试创建一个程序,它将所有实数放在一个数组中 - 数字的排序发生在一个单独的函数中 - 按降序排列,然后打印出来。

以下是我到目前为止的程序,但根据编译器,它有两个问题:(i) 在第 22 行 ( "return N[t];" ),我得到“error: invalid types 'double*[double]' for array subscript ”。
(ii) 在第 28 行(“cout << sort_array(Q[100]) << " " "”),我得到“error: cannot convert 'double' to 'double*' for argument '1' to 'double* sort_array(double*)' ".

我不太明白为什么会出现这两个错误,但我希望能得到一些帮助来解决它们。

#include <iostream>
#include <cstdlib>

using namespace std;

double *sort_array (double *N) {
double t;
int size=100, a, b;

for (t=0; t<size; t++)
*N = rand()%250;

for (a=1; a<size; a++) {
for (b=size-1; b>=a; b--) {
if (N[b-1] < N[b]) {
t = N[b-1];
N[b-1] = N[b];
N[b] = t;
}
}
}
return N[t];
}

int main()
{
double Q[100];
cout << sort_array(Q[100]) << " ";
cout << endl;


return 0;
}

最佳答案

问题是 sort_array(Q[100]) 语句。这是告诉编译器使用 Q 数组中的第 101 个 double 调用 sort_array(实际上是越界)。您真的只想传入 Q 而不是 Q[100]

但是,请注意,将 C 样式数组作为 double* 传递会丢失长度信息,这不是规范的 C++。相反,您可以使用 vector 来携带数组和大小。

编辑:由于您正在就地修改数据,因此您的函数根本不需要返回任何内容。将其更改为 void 并在最后跳过 return 。然后,您必须遍历 vector/数组以打印出每个元素。 cout 不提供打印聚合的内置功能。<​​/p>

终于有一本书来自 The Definitive C++ Book Guide and List可能会帮助您快速了解 C++ 概念。

关于c++ - 错误 : invalid types 'double*[double]' for array subscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com