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就排在前面,也就是對整個數組就行降序排列。