关于结构的问题
struct STU
{
int sn;
char name[20];
int score[3];
int average;
} students[5];
void main()
{
int i, j, t;
for(i=0; i < 5; i++)
{
cin>>students[i].sn;
cin>>students[i].name;
students[i].average = 0;
for(j=0; j< 3; j++)
{
cin>>students[i].score[j];
students[i].average += students[i].score[j];
}
students[i].average /= 3;
}
//下面是重点
STU *p[5];
for (i=0;i<5;i++)
{
p[i]=&students[i];
}
STU *m;
for(i=1; i < 5; i++)
for(j=0; j<= 4-i; j++)
if(students[j].average < students[j+1].average)
{
m=p[j];
p[j]=p[j+1];
p[j+1]=m;
}
//重点在排序
cout<<"输出平均分在前3名的学生的姓名及平均分:"<<endl;
for(i=0; i < 3; i++)
{
cout<<p[i]->name<<" "<<p[i]->average<<endl;
}
}
STU *p[5];
for (i=0;i<5;i++)
{
p[i]=&students[i];
}
STU *m;
for(i=1; i < 5; i++)
for(j=0; j<= 4-i; j++)
if(students[j].average < students[j+1].average)
{
m=p[j];
p[j]=p[j+1];
p[j+1]=m;
}
为什么上述方法得出的结果是错的,但是
STU *m;
for(i=1; i < 5; i++)
for(j=0; j<= 4-i; j++)
if(p[j]->average < p[j+1]->average)
{
m=p[j];
p[j]=p[j+1];
p[j+1]=m;
}
这种方法得出的结果是对的。
students[j].average < students[j+1].average 和 p[j]->average < p[j+1]->average不是等价的吗??