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 < /代码>ndstd::array
更易于使用,不易出错,而且效率也不会降低。