qsort函数
函数的原型:
void qsort(void*base,size_t num,int(*comparator)(const void *,const void *));
参数解释:
很简单理解,第一个参数就是待排序的起始地址、元素个数和每个元素大小
最后那个参数比较特别,是一个指向函数的指针,该函数大概的形式为:
int cmp(const void *,const void *){…}
而const void *被称为指向常数的“万能”指针,它可以通过强制转换变成任意类型的指针
举个小栗子:
#include<stdio.h>
int cmp(const void*a,const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int a = 1, b = 10;
int c = 0;
c = cmp(&a,&b);
printf("%d",c);
return 0;
}
运行结果:
换成 char 类型:
#include<stdio.h>
int cmp(const void*a,const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
char a = 'a';
char b = 'f';
int c = 0;
c = cmp(&a,&b);
printf("%d",c);
return 0;
}
运行结果: