天天看点

qsort()函数的使用

  void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

base-- 指向要排序的数组的第一个元素的指针。

nitems-- 由 base 指向的数组中元素的个数。

size-- 数组中每个元素的大小,以字节为单位。

compar-- 用来比较两个元素的函数,即函数指针

我从我写的代码中抽了一个例子出来:

  注意:传入的形参变量是两个空指针,所以在下面的时候你要将这两个空指针强转为你要比较的类型,例如例子上面的:(stu*)a ,就是把a强转为了我自己定义的结构体类型stu     然后  *(stu*)a 则是对这个指针取内容,至于这个函数是怎么比较的,则下面说:

  如果compar返回值小于0(< 0),那么a所指向元素会被排在b所指向元素的左面;

  如果compar返回值等于0(= 0),那么a所指向元素与b所指向元素的顺序不确定;(这里体现出qsort()的不稳定)

  如果compar返回值大于0(> 0),那么a所指向元素会被排在b所指向元素的右面。

也就是说,如果   a.t>b.t   则return-1;(这里简单写了,能表达意思就行)意思就是,如果a.t大,那a.t就排在前面,也就是对整个数组就行降序排列。