Code below taken from 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;
}
We have a compare function with parameters in its signature but when we call it in qsort no arguments are passed. How are the values of a and b passed to the function? Thanks
In the context of this expression:
the subexpression
comparethat identifies a function decays into a pointer to that function (and not a function call). The code is effectively equivalent to:This is exactly the same thing that happens to arrays when used as arguments to a function (which you might or not have seen before but is more frequently asked):