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

相关推荐
_MyFavorite_几秒前
JAVA重点基础、进阶知识及易错点总结(10)Map 接口(HashMap、LinkedHashMap、TreeMap)
java·开发语言
GISer_Jing1 分钟前
ReAct规划原理实战指南
前端·react.js·ai·aigc
SoaringHeart4 分钟前
Flutter组件封装:翻转组件 NFlipCard
前端·flutter
qqty12176 分钟前
Spring Boot管理用户数据
java·spring boot·后端
Flittly10 分钟前
【SpringAIAlibaba新手村系列】(1)初识 Spring AI Alibaba 框架
java·spring
LlNingyu25 分钟前
文艺复兴,什么是XSS,常见形式(一)
前端·安全·web安全·xss
LSL666_41 分钟前
MybatisPlus条件构造器(上)
java·数据库·mysql·mybatisplus
U-52184F691 小时前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
bearpping1 小时前
SpringBoot最佳实践之 - 使用AOP记录操作日志
java·spring boot·后端
一叶飘零_sweeeet1 小时前
线上故障零扩散:全链路监控、智能告警与应急响应 SOP 完整落地指南
java·后端·spring