recherche binary C

Voici la signature de la fonction de recherche binary:

void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 

Je ne comprends pas pourquoi nous envoyons un vide * comme pointeur de tableau, au lieu de vide **, car, autant que je sache, si je cherche un int dans un tableau int, je devrais envoyer un int * as array, not int … L’implémentaion serait-elle très différente (ou peut-être impossible à mettre en œuvre) si la signature de la fonction était comme ceci:

 void *bsearch(const void *key, const void** base , size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 

Merci d’avance.

La fonction bsearch() est assez flexible, car vous pouvez passer un pointeur sur n’importe quel type de tableau. Changer le paramètre base en const void **base impliquerait que vous ne pouvez utiliser bsearch() sur des tableaux de pointeurs.

Si vous recherchez un tableau d’ int , alors vous devriez certainement passer un void * qui est l’adresse de début de votre tableau.