Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 填充数组(访问冲突写入位置0x00000000)_C++ - Fatal编程技术网

C++ 填充数组(访问冲突写入位置0x00000000)

C++ 填充数组(访问冲突写入位置0x00000000),c++,C++,当我想填充天[]时,我的代码开始中断;当我想填充ratio2[]时,它也会断开。我的所有数组都在main()中声明,并初始化为MAX,在全局定义中定义为50。我需要在每个索引中存储一个值,然后打印它 void getdata(ifstream &inFile, int id[], int days[], double ratio2[], double estmax_heart[], double ratio[], double avg[]) { int i; int j = 0;

当我想填充
天[]
时,我的代码开始中断;当我想填充
ratio2[]
时,它也会断开。我的所有数组都在
main()
中声明,并初始化为
MAX
,在全局定义中定义为50。我需要在每个索引中存储一个值,然后打印它

void getdata(ifstream &inFile, int id[], int days[], double ratio2[], double estmax_heart[], double ratio[], double avg[])
{
    int i; int j = 0;
    int num;
    double largest = 0;
    int n = 0;

    int max_heart = 0; int age = 0;
    double avg_comm_rate = 0; 
    double maxcomm_rate = 0;
    double exc_rate = 0;
    double sum = 0;


    while (! inFile.eof())
    {       
        inFile >> id[n];
        cout << id[n] << " ";

        inFile >> max_heart;
        cout << max_heart << " ";

        inFile >> age;
        cout << age << " " << endl;

        estmax_heart[n] = 220-age;

        ratio[n] = (max_heart/estmax_heart[n]) * 100;

        days = 0; largest = 0; sum = 0; ratio2 = 0; j = 0;

        for (i = 0; i < 5; i++)
        {   
            inFile >> avg_comm_rate;
            cout << avg_comm_rate << " ";

            inFile >> maxcomm_rate;
            cout << maxcomm_rate << " ";

            inFile >> exc_rate;
            cout << exc_rate << endl;

            if (exc_rate != 0)
            {
                days[i] = j + 1;        
            }

            if(maxcomm_rate > largest)
            {
                largest = maxcomm_rate;
            }

            sum = sum + avg_comm_rate;

            ratio2[i] = (largest / max_heart) * 100;
        }

        n++;    

        calculate(i, days, sum, avg_comm_rate, maxcomm_rate, exc_rate, avg, largest, estmax_heart, ratio, ratio2);

        system("pause");

        //cout << sum;
    }

    inFile.close();

    return;

}
void-getdata(ifstream&infle,int-id[],int-days[],double-ratio2[],double-estmax_-heart[],double-ratio[],double-avg[])
{
int i;int j=0;
int-num;
双最大=0;
int n=0;
int max_heart=0;int age=0;
双平均通信速率=0;
双最大通信速率=0;
双倍汇率=0;
双和=0;
而(!infle.eof())
{       
infle>>id[n];
我的心;
年龄;

cout这是因为您在访问数组指针之前将其分配给
0

days = 0; largest = 0; sum = 0; ratio2 = 0; j = 0;

这是因为在访问数组指针之前,将其分配给
0

days = 0; largest = 0; sum = 0; ratio2 = 0; j = 0;

作为C和C++中的函数参数,在“代码> int a[]之间没有区别。和 int *a/COD>——无论在哪种情况下,你所传递的是数组第一元素的指针。因此,通常最好使用指针语法,因为它清楚地说明了你正在处理的问题,并有助于避免像这样的错误。当然,在C++中,无论如何都不需要使用C数组。<代码> STD::vector < /代码>ND<代码> STD::数组使用起来更容易,错误更少,效率也不低。C和C++中的函数参数,在“代码> int a[]之间没有区别。和 int *a/COD>——无论在哪种情况下,你所传递的是数组第一元素的指针。因此,通常最好使用指针语法,因为它清楚地说明了你正在处理的问题,并有助于避免像这样的错误。当然,在C++中,无论如何都不需要使用C数组。<代码> STD::vector < /代码>nd
std::array
更易于使用,不易出错,而且效率也不会降低。