回调函数的应用

来源:互联网 发布:淘宝代发论文靠谱吗 编辑:程序博客网 时间:2024/05/16 23:56

1回调函数

1.1问题引出

当我们要实现排序的时候,升序和降序,都是写死在程序中的,如果要改只能改动
原代码,那么如果程序是以库的形式给出的呢?那又如何呢?

#include <stdio.h>void selectSort(int *p, int n){    for(int i=0; i<n-1 ;i ++)    {        for(int j=i+1; j<n; j++)        {            if(p[i] < p[j])            {                p[i] = p[i]^p[j];                p[j] = p[i]^p[j];                p[i] = p[i]^p[j];            }        }    }} int main(void){    int arr[10] = {6,5,4,3,2,1,7,8,9,0};    selectSort(arr,10);    for(int i=0; i<10; i++)    {        printf("%d\n",arr[i]);    }     return 0;}

1.2回调(函数作参数)

为了解决不修改原代码或是库文件,我们为排序函数提供了回调函数。·

#include <stdio.h>int callBackCompare(int a,int b){    return a<b?1:0;}void selectSort(int *p, int n,int(*pf)(int,int)){    for(int i=0; i<n-1 ;i ++)    {        for(int j=i+1; j<n; j++)        {            if(pf(p[i],p[j]))            {                p[i] = p[i]^p[j];                p[j] = p[i]^p[j];                p[i] = p[i]^p[j];            }        }    }}int main(void){    int arr[10] = {6,5,4,3,2,1,7,8,9,0};    selectSort(arr,10,callBackCompare);    for(int i=0; i<10; i++)    {        printf("%d\n",arr[i]);    }    return 0;}
1 0
原创粉丝点击