qsort()函数的用法详解
该函数来自C语言标准库-stdlib.h。
1.1函数原型:
void qsort(void* base, size_t num, size_t width, int (__cdecl* compare)(const void*, const void*));
1.2函数功能: 对数组进行排序,数组有num个元素,每个元素大小为size。
参数base - 指向数组的起始地址,通常该位置传入的是一个数组名。
参数num - 表示该数组的元素个数。
参数width - 表示该数组中每个元素的大小(字节数)。
参数(__cdecl* compare)(const void*, const void*) - 此为指向比较函数的函数指针,决定了排序的顺序。
2.1 compare参数
compare参数指向一个比较两个元素的函数。(小到大是升序,大到小是降序)
该函数两个形参必须是const void *型,同时在调用该函数时,传入的实参也必须转换成const void *型。在compar函数内部会将const void *型转换成实际类型,见下文。
int compare(const void* _x, const void* _y){
int *x = _x, *y = _y;
return *x == *y? 0 : *x > *y? 1 : -1;
}
如果compare返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的前面
如果compare返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定
如果compare返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的后面