二分查找 C
binary search C
这是二进制搜索函数的签名:
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, <b>const void** base</b>, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
提前致谢。
bsearch()
函数非常灵活,因为您可以将指针传递给 任何 类型的数组。将 base
参数更改为 const void **base
意味着您只能在指针数组上使用 bsearch()
。
如果您要搜索 int
的数组,那么您当然应该传递一个 void *
,它是您数组的起始地址。
这是二进制搜索函数的签名:
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, <b>const void** base</b>, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
提前致谢。
bsearch()
函数非常灵活,因为您可以将指针传递给 任何 类型的数组。将 base
参数更改为 const void **base
意味着您只能在指针数组上使用 bsearch()
。
如果您要搜索 int
的数组,那么您当然应该传递一个 void *
,它是您数组的起始地址。