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

相关推荐
拉不动的猪几秒前
前端三大权限场景全解析:设计、实现、存储与企业级实践
前端·javascript·面试
LaoZhangGong123几秒前
以太网HTTP数据包格式分析
c语言·stm32·网络协议·http·tcp·arp
L.EscaRC6 分钟前
Spring IOC核心原理与运用
java·spring·ioc
摇滚侠19 分钟前
2025最新 SpringCloud 教程,Nacos-总结,笔记19
java·笔记·spring cloud
在逃热干面23 分钟前
(笔记)获取终端输出保存到文件
java·笔记·spring
爱笑的眼睛1124 分钟前
深入理解MongoDB PyMongo API:从基础到高级实战
java·人工智能·python·ai
wordbaby31 分钟前
Flutter Form Builder 完全指南:告别 Controller 地狱
前端·flutter
笃行客从不躺平34 分钟前
遇到大SQL怎么处理
java·开发语言·数据库·sql
q***876041 分钟前
Spring Boot 整合 Keycloak
java·spring boot·后端
Billow_lamb42 分钟前
Spring Boot2.x.x全局拦截器
java·spring boot·后端