C语言qsort()库函数用回调函数的原因
Posted 两片空白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言qsort()库函数用回调函数的原因相关的知识,希望对你有一定的参考价值。
qsort函数的参数里有一个函数指针,这个函数指针就是一个回调函数。
不知道大家在刚开始学的时候会不会跟我有一样的疑问,这个qsort为什么要用回调函数,直接在库函数里使用一个固定名字的比较函数,然后在使用qsort函数时,约定要写一个固定函数名的比较函数不就好了?为啥还要使用回调函数呢?
随着学习的深入,我对这个有了不一样的理解:
首先说明,库函数的源文件都是以二进制文件,也就是目标文件保存的。程序在链接时才会去链接去库函数。
如果这里不使用回调函数作为参数,那么库函数qsort连编译都通过不了,更加无法形成二进制文件了。使用了回调函数作为参数,此时有函数的声明,能通过编译和汇编,形成二进制文件。调用回调函数会在程序链接时,去找函数的实现,调用函数。
所以就需要我们来编写qsort回调函数的实现,在链接时,共qsort调用。
以上是关于C语言qsort()库函数用回调函数的原因的主要内容,如果未能解决你的问题,请参考以下文章
C语言篇 + 指针进阶练习 + qsort模拟实现(回调函数思想) + 指针和数组笔试题