代码原型:
cpp
#include <stdlib.h> // 头文件
// 参数:待查找的关键值地址、待查找数组、元素个数、单个元素大小、比较函数
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
前提:数组必须有序
比较函数详细讲解:
- 返回值:找到则返回匹配元素的地址 ,找不到则返回
NULL
- 比较函数
compar(key, elem)
规则(注意参数顺序!)(key是目标值,elem代表当前正在比较的目标值):- 返回负数:
key
小于elem
(需要在左边查找); - 返回正数:
key
大于elem
(需要在右边查找); - 返回 0:
key
等于elem
(找到匹配)
- 返回负数:
最终返回找到的结果地址,一般得进行转换类型返回
找到则返回元素地址,可通过 地址 - 数组首地址
计算索引;未找到返回 NULL