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

相关推荐
橙子家18 小时前
浏览器缓存之【基础键值存储】:Local storage 和 Session storage
前端
星星在线20 小时前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒21 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x21 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者1 天前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
NE_STOP1 天前
Vide Coding--AI编程工具的选择
java
袋鱼不重1 天前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
LDR0061 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
码云数智-园园1 天前
C++20 Modules 模块详解
java·开发语言·spring
Fireworks1 天前
深入vue3源码解读 -- 1、响应式的基础概念
前端