错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无

error: cannot convert ‘double*’ to ‘double’ for argument ‘1’ and error: invalid types ‘double[double]’ for array subscript

本文关键字:double 错误 数组 下标 类型 转换 参数      更新时间:2023-10-16

我正在尝试引入部分数据文件来填充数组,用户有三次尝试输入正确的数据文件名。我一再遇到这些错误。我知道像 arr 这样的数组只是指向内存块的指针。

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
void extract (double arr ,int n, double& i, int& error);
int main () {
    double arr[256];
    int n=256;
    double i=0;
    int error=0;
    extract (arr,n,i,error);
    return 0;
    }
void extract (double arr, int n, double& i,int& error){
    string infile;
    string data="data.txt";cout <<"enter data file name/n";
    cin >> infile;
    while ((error<3) && (data.compare(infile) != 0)){
            error++;
            cout << "error in input. Please try again/n";
            cin >> infile;
            }
    if (error<3){
            ifstream fin;
            fin.open("data.txt");
            while ((i<n) && (fin >> arr[i])){
                    i++;
                    cout << arr[i] << "   ";
                    }
            fin.close();}
    }

错误发生在将数据文件中的数据输入数组的 while 循环中。将双 i 更改为 int 我用

error: invalid types ‘double[int]’ for array subscript

这是我的数据文件8487781694368793502263289160642741277337126968308331632468363032359706894571243307422208538992516711427928157746371978262685283764730145825968346156835654451889777989854525510033617769401327879540

在函数

的定义和声明中将 void extract (double arr ,int n, double& i, int& error);更改为void extract (double* arr ,int n, double& i, int& error); extract

编辑:另一个错误是因为double类型变量被用作数组索引,在您的情况下i extract函数中,所以要么将i的类型更改为int,要么在提取函数的最开始时使用 i = static_cast<int>(i),我更喜欢第一种方法。

这是您的代码的链接以及所做的更改,它可以完美编译和工作。

希望这有帮助

相关文章: