C语言bsearch的使用

代码原型:

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

相关推荐
yong99903 小时前
C#驱动斑马打印机实现包装自动打印
java·数据库·c#
云枫晖3 小时前
Webapck系列-初识Webpack
前端·javascript
好记忆不如烂笔头abc3 小时前
linux系统记录登录用户的所有操作
java·linux·服务器
慧一居士3 小时前
HTML5 功能介绍,使用场景,对应功能点完整使用示例
前端
海在掘金611273 小时前
告别“undefined is not a function”:TS如何让你的函数调用更安心
前端
云中雾丽3 小时前
Flutter中Stream的各种使用场景和实现方式
前端
CptW3 小时前
第1篇(Ref):搞定 Vue3 Reactivity 响应式源码
前端·面试
葡萄城技术团队3 小时前
基于 SpreadJS 的百万级数据在线数据透视表解决方案:技术解析与实践
前端
sp423 小时前
一套清晰、简洁的 Java AES/DES/RSA 加密解密 API
java·后端