作业帮 > 综合 > 作业

问下这个while为什么运行的时候报错

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 17:45:49
问下这个while为什么运行的时候报错
void Sport::school_total_score_show(Sport* L,Sport* M,Sport* N,Sport* O,Sport* P)
{
int n=1;
Sport *x;
x = new Sport;
for (n;nscore);
x=x->next;
}
x=N->next;
while((x->school==n)&&(x!=NULL))
{
x->show_one();
total_boy[n]=total_boy[n]+(x->score);
x=x->next;
}
x=O->next;
while((x->school==n)&&(x!=NULL))
{
x->show_one();
total_girl[n]=total_girl[n]+(x->score);
x=x->next;
}
x=P->next;
while((x->school==n)&&(x!=NULL))
{
x->show_one();
total_boy[n]=total_boy[n]+(x->score);
x=x->next;
}
}
}
这个是做的体育分数统计的一个函数,运行到while((x->school==n)&&(x!=NULL))
会出现内存报错,
不是while((x!=NULL)&&(x->school==n))
这个原因...
Sport *A,*B,*C,*D; 它们是指针.
你尚未初始化它们,未分配单元,未调用 constructer.
所以 A->next 这些东西尚不能用.
最起码你要有:
Sport *A,*B,*C,*D;
A = new Sport;B = new Sport;C= new Sport;D= new Sport;
do {}
while(((A->next)==NULL) || ((B->next)==NULL) || ((C->next)==NULL) || ((D->next)==NULL));
}

另外:
if(x=1)
if(x=2)
等等是不是写错了.
x=1 是赋值语句,语法检查没错,但你是否想写条件表达式: if (x == 1) ...?
请参考