int compar(const void *a1, const void *a2)
{
int *a = (int *) a1;
int *b = (int *) a2;
if (*a < *b)
return -1; //decreasing order 1
if (*a == *b)
return 0;
if (*a > *b)
return 1; //decreasing order -1
}
int compar(const void *a1, const void *a2)
{
int a = *( int*) a1;
int b = *( int*) a2;
if (a < b)
return -1;
if (a == b)
return 0;
if (a > b)
return 1;
}
就是简单的比较两个值的大小,返回 -1,0,或者1
参数使用的const void * 指针,const用来保护指针数据不能被函数修改。void的意义不大,因为函数里面强制转换为 int * 了。
第一个是将参数转换为int*,然后用 * a, * b取值比较,第二个直接用a,b取得指针指向的值进行比较,一个意思。
其实是一样 ,只不过第一个是指针a、指针b,然后解引用得到a和b的值,比大小。第二个是直接得到a和b的值,然后比大小。