函数指针有何用

函数指针的应用场景比较多,以库函数qsort排序函数为例,它的原型如下:

void qsort(void *base,size_t nmemb,size_t size , int(*compar)(const void *,const void *));

看起来很复杂对不对?拆开来看如下:

void qsort(void *base, size_t nmemb, size_t size, );

拿掉第四个参数后,很容易理解,它是一个无返回值的函数,接受4个参数,第一个是void*类型,代表原始数组,第二个是size_t类型,代表数据数量,第三个是size_t类型,代表单个数据占用空间大小,而第四个参数是函数指针。这第四个参数,即函数指针指向的是什么类型呢?

int(*compar)(const void *,const void *)

很显然,这是一个接受两个const void*类型入参,返回值为int的函数指针。

到这里也就很清楚了。这个参数告诉qsort,应该使用哪个函数来比较元素,即只要我们告诉qsort比较大小的规则,它就可以帮我们对任意数据类型的数组进行排序。

在这里函数指针作为了参数,而他同样可以作为返回值,创建数组,作为结构体成员变量等等,它们的具体应用我们在后面的文章中会介绍,本文不作展开。本文只介绍一个简单实例。

最新文章

  1. Android之TabActivity的使用
  2. js的继承
  3. windows平台解决quick3.5final + sublimeText3 模拟器找不到的问题
  4. [Js]碰撞运动
  5. ios 把毫秒值转换成日期 NSDate
  6. HDU1569+最大点权集
  7. 初始seajs
  8. 在家用机上搭建 Git https 服务器
  9. 黑马程序员:3分钟带你读懂C/C++学习路线
  10. C++对象模型的那些事儿之三:默认构造函数
  11. [Linux]fcntl函数文件锁概述
  12. swift 有道 翻译文档(2 条件语句 循环语句)
  13. CAS 单点登录【1】入门
  14. 生成器的使用demo
  15. java多线程中的死锁情况读书笔记
  16. Struts2学习笔记二:开发流程
  17. 破解Excel密码
  18. How to convert a QString to unicode object in python 2?
  19. phpstorm破解 IntelliJ IDEA License Server本地搭建教程 http://blog.lanyus.com/archives/174.html/comment-page-6#comments 附件:mac环境
  20. iOS设备是否越狱的判断代码

热门文章

  1. Deepin升级Linux5.0内核(目前最新5.3-rc7)
  2. [C++] 习题 2.15 实现简单环形队列
  3. STM32之串口编程步骤
  4. 长乐培训Day2
  5. adb连接安卓设备的2种方式
  6. 浅谈(IOC)依赖注入与控制反转(DI)
  7. C/C++读写文件的几种方法fstream fopen、fwrite()、fread()操作
  8. PyCharm 占用过大 C 盘空间,system 配置文件迁移
  9. VBA Exit Do语句
  10. [技术翻译]您应该知道的13个有用的JavaScript数组技巧