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

相关推荐
陈天伟教授9 分钟前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
陈文锦丫11 分钟前
MQ的学习
java·开发语言
乌暮20 分钟前
JavaEE初阶---线程安全问题
java·java-ee
爱笑的眼睛1127 分钟前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai
Seven971 小时前
剑指offer-52、正则表达式匹配
java
信看1 小时前
NMEA-GNSS-RTK 定位html小工具
前端·javascript·html
代码or搬砖1 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
Tony Bai1 小时前
【API 设计之道】04 字段掩码模式:让前端决定后端返回什么
前端
青蛙大侠公主1 小时前
Thread及其相关类
java·开发语言