二进制搜索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 *
,它是数组的起始地址。