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

相关推荐
JeffongTan8 小时前
在LWC中镶嵌VF Page获取用户IP
前端·javascript·salesforce
phltxy9 小时前
C语言操作符详解
java·c语言·算法
RuoZoe9 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
步行cgn10 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl10 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
陆枫Larry10 小时前
Astro 是什么
前端
嘿嘿-6611 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
是立不是利12 小时前
写给设计师的 CSS 博客美学指南
前端·css
知无不研12 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
默_笙12 小时前
🏝 Docker 就是"房地产开发":从施工图纸到小区物业的容器化指南
前端·javascript