二进制搜索C.

这是二进制搜索function的签名:

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

我不明白为什么我们发送一个void *作为数组指针,而不是void **,因为据我所知,如果我在int数组中寻找一个int,我应该发送一个int *作为数组,而不是int …如果函数的签名是这样的,实现是否会有很大的不同(或者可能无法实现):

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

提前致谢。

bsearch()函数非常灵活,因为您可以将指针传递给任何类型的数组。 将base参数更改为const void **base意味着您只能在指针数组上使用bsearch()

如果您正在搜索int数组,那么您当然应该传递一个void * ,它是数组的起始地址。