int (*fcmp)(const void *,const void *)
我知道这个函数是什么意思.
但是我的问题是.
假设这个 函数 传递 *p 和*q 俩个值地址
int (*fcmp)(const void *p,const void *q)
{
if(*(int *)p>*(int *)q)
return 1;
if(*(int *)p<*(int *)q)
return -1;
retuern 0;
}
在这个函数中 我想知道 指针*p 和 *q 接收的地址 是通过qsort函数的哪些步骤确定之后 所传递下来的..数字对比的时候正常我们写冒泡的话是通过for循环来人为的定义从数组前开始对比还是数组后开始对比,但是在这里 我不知道 他的代码是如何体现的..哪位仁兄能告我一下 需要要对比的数字 qsort函数是如何确定的吗??
你没明白我说的是什么意思. 快排原理我知道. 我给你举个例子
void temp(int a,int b) //注意这里
{
printf("%d%d\n",a,b);
}
int main()
{
int a=10,b=20;
temp(a,b); //在注意这里
}
在这里 因为我定义了a和b的值 所以我知道 传到函数中的 a=10 ,b =20
但在int (*fcmp)(const void *p,const void *q) 函数中 我怎么确定qsort是将数组的[0]还是[N-1]开始 我想知道的是这个.
http://baike.baidu.com/view/982231.htm
从qsort函数原型来看,它的入参是一个待排序数组(传入的是数组首地址),还有比较函数。比较函数fcmp是给qsort内部使用的,用来比较两个元素的大小。
至于qsort内部怎么利用你传进去的数组及比较函数,外面看不到。除非在你的比较函数中加入打印信息;或者调试代码,进入qsort查看。