博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《斯坦福大学:编程范式》第5节1:void*类型的使用:一个兼容所有类型的线性搜索...
阅读量:7212 次
发布时间:2019-06-29

本文共 521 字,大约阅读时间需要 1 分钟。

 

void* lsearch( void *key, void *base, int n, int elemSize , int  (*compare)(void* a, void* b))  //这里使用函数指针

{

  for(int i = 0; i< n; i++)

  {

     //这里 使用了一个hack, (char*)base 迫使 后面的+的 i*elemSize 变成char型, 也就是  i*elemSize* typeof(char)

    //第二个hack 是 返回值为void*,compare函数的比较是从高位(第一位为符号位)按位对比,有一个不符合则返回-1或1(根据大小),这样我们不需要知道 key 和base是什么类型就可以比较。

    void* elemAddr = (char*)base + i*elemSize; 

              if(compare(key,elemAddr) == 0)

    {

                  return elemAddr;

    }

  }

  return NULL;

} 

转载于:https://www.cnblogs.com/sundayofit/p/9292219.html

你可能感兴趣的文章
NEC向格鲁吉亚提供基于面部识别技术的城市监控系统
查看>>
linux网络编程之-----基础理论篇
查看>>
加大Linux服务器的文件描述符
查看>>
Linux内核编译过程详解
查看>>
shell监控web服务的多种方案
查看>>
微信小程序--亲戚称呼计算
查看>>
Broker模块划分
查看>>
常用URL地址
查看>>
修改centos系统默认编辑器
查看>>
Linux 2 unit7 挂载网络共享
查看>>
搭建cacti
查看>>
FPGA设计——CMOS摄像与HDMI显示(DVP版)
查看>>
git分支建立删除,打tag
查看>>
mac地址规范及算法
查看>>
#10 Linux硬盘管理
查看>>
实战操作主机角色转移(二)
查看>>
MySQL数据库基本操作
查看>>
我写的oracleRAC状态监控脚本(在单位一直使用,比较稳定)
查看>>
**PHP中替换换行符
查看>>
更改数据库的兼容模式
查看>>