【发布时间】:2012-07-06 09:13:54
【问题描述】:
以下代码取自here。
* 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的限制。 -
@R.. 我刚从 cpluscplus.com 拿了它,不过谢谢
-
cplusplus.com 是一个非常糟糕的 C 和 C++ 信息来源的另一个原因......
标签: c parameters parameter-passing void-pointers qsort