zoukankan      html  css  js  c++  java
  • qsort中的函数指针,及函数解释

    函数指针有何用

    函数指针的应用场景比较多,以库函数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比较大小的规则,它就可以帮我们对任意数据类型的数组进行排序。

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

  • 相关阅读:
    JAVA中内存分配策略里的堆与栈
    Java中间件:淘宝网系统高性能利器
    优化Java堆大小的五个技巧
    Java编程程序异常处理方法
    Java内存管理的九个小技巧
    c++ 函数模板
    c setsockopt设置套接字状态
    c++ typedef 类型重定义语句
    c getaddrinfo函数
    c iovec结构体 readv writev
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007360.html
Copyright © 2011-2022 走看看