Je lisais un mergeSort de la bibliothèque standard en c et j'ai trouvé qu'il a une fonction de comparaison comme argument (i.e void msort(void *base, size_t nitems, size_t size, int (*compar)(const void , const void )) lorsqu'il est défini). Cependant, dans l'utilisation réelle, lorsque la fonction msort est appelée, la fonction compar n'a pas d'argument qui lui est passé (même si elle a deux paramètres, qui sont (const void *, const void *) comme paramètres. Regardez l'extrait de code suivant et j'aimerais comprendre comment il est possible pour une fonction avec des paramètres d'être utilisée sans arguments au moment où elle est appelée ?
#include <stdio.h>
#include <stdlib.h>
int values[] = { 88, 56, 100, 2, 25 };
int cmpfunc (const void * a, const void * b) {
return ( *(int*)a - *(int*)b );
}
int main () {
int n;
printf("Before sorting the list is: \n");
for( n = 0 ; n < 5; n++ ) {
printf("%d ", values[n]);
}
msort(values, 5, sizeof(int), cmpfunc);
printf("\nAfter sorting the list is: \n");
for( n = 0 ; n < 5; n++ ) {
printf("%d ", values[n]);
}
return(0);
}