-2
struct student ** topKStudents(struct student *students, int len, int K) {
student* top_students = (struct student *)(malloc(K * sizeof(struct student)));
struct student temp;
int i;
for (i = 0; i < len - 1; i++){
for (int j = 0; j < len - 1; j++)
if (students[j + 1].score>students[j].score){
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
for (i = 0; i < K; i++){
top_students[i] = students[i];
}
return &top_students;
}
有代码没有生成错误,但我得到的地址,而不是值试图返回前K学生
好一件事,你返回一个局部变量的地址。呼叫返回后,该地址无效,因此永远无法正确使用。理解函数返回时变量'top_students'已经失效。我建议返回它的价值而不是地址。 –
你可以从简单的事情开始避免很多工作:返回前两名学生的功能。 – Beta