假设我有一个名为Student
的结构。我有一个学生指针数组。qsort() - 比较函数参数
Student *a[10];
我需要按照学生的姓名排列数组。所以我写的比较功能:
int compare(const void *a, const void *b){
Student *temp1=*(Student **)a;
Student *temp2=*(Student **)b;
return strcmp(temp1->name, temp2->name);
}
然后我具备的功能进行排序:
void SortArray(Student *a[], int len){
qsort(a, len, sizeof(Student *), *compare*);
printArray(a);
}
的快速排序的最后部分是什么,我不明白。我看到他们写了&compare
的一些帖子,以及一些他们没有写的帖子。只有当我使用&compare
它工作。
我如何知道是否使用&
?
函数与数组在一种方式上类似:如果函数在指向函数的指针时使用,它将*衰减*到指针。通常使用例如安全'比较',但我建议你使用'&compare'来使代码读者更加明确。 –
你不需要任何装饰,只需通过比较。 – Amit
'&'是明确的/可读的,其用法与&array [0]完全相同:对任何知道该语言的人来说,都是令人困惑和无耻的丑陋。只需使用'compare'或'array'。请注意,在每次调用函数**时,如'func(x)'中的函数**,func的名称正在衰减为一个指针,因为'()'运算符(函数调用)需要一个函数指针作为其操作数。 –