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.