一 是什么?
qsort是C标准库中的一个函数,用于对数组进行快速排序。它可以接受任意类型的数据,并使用用户提供的比较函数来进行排序。
qsort是stdlib.h中的函数,因此使用前需要声明:
qsort函数的原型如下:
1 数组名(也就是数组的地址)
2元素个数(从前往后计算)
3数组元素所占字节(int,char double等)
4比较函数
关于比较函数:
比较函数需要返回一个整数值,表示a和b的大小关系。如果返回负数,则a排在b之前;如果返回正数,则a排在b之后;如果返回0,则a和b相等。
1个为什么?
为什么 参数是const void*的形式?
因为在C语言中,void *指针可以指向任意类型的数据,而且在比较函数中,通常不需要修改参数的值。因此,将参数定义为const void *a,const void *b可以确保比较函数不会修改传入的参数,并且可以接受任意类型的数据进行比较。这样的设计使得cmp函数更加通用和灵活。
二 具体的应用
例1 对整型数组进行排序
例2 对字符串数组进行排序
例3 对于结构体数据的排序(对包含姓名和年龄的结构体数组进行排序)