请用squart解释一些示例代码

时间:2014-01-12 14:04:19

标签: c compare

有人可以解释以下代码的作用吗?我是编程新手,我正在学习C。

const void * a

return ( *(int*)a - *(int*)b );

qsort (values, 6, sizeof(int), compare);

/* qsort example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* qsort */

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;
}

输出

这给出:10,20,25,40,90,100

1 个答案:

答案 0 :(得分:0)

此:

const void * a

表示传递给函数的参数是指向void type 的指针,其值为只读

这一行:

( *(int*)a - *(int*)b );

取消引用传递指针将它们解释为int的指针并计算这些值之间的差异。

而且:

qsort (values, 6, sizeof(int), compare);

调用标准库的qsort()函数,其中compare是实际比较值的函数。