以下代码取自here。为什么不需要将参数传递给qsort比较器函数?
* qsort example */
#include <stdio.h>
#include <stdlib.h>
int values[] = { 40, 10, 100, 90, 20, 25 };
int compare (const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
int main()
{
int n;
qsort (values, 6, sizeof(int), compare);
for (n=0; n<6; n++)
printf ("%d ",values[n]);
return 0;
}
我们有一个比较函数与其签名中的参数,但是当我们在qsort中调用它时,没有参数被传递。 a
和b
的值是如何传递给函数的?由于
与你的问题没有关系,但是你的比较函数有一个主要的错误,除非你事先知道你的数组中的整数范围受到'INT_MAX'的限制。 – 2012-07-06 03:42:12
@R ..我只是把它从cpluscplus.com,谢谢您的好意 – Steve 2012-07-07 00:17:00
另一个原因cplusplus.com是C和C++信息的残暴恶劣源... – 2012-07-07 00:59:41