C--函数指针与回调函数

定义

回调函数,当一个函数执行时,中途调用其他定义好的函数来帮助实现功能,再继续执行这个函数
请添加图片描述

函数指针

类型为函数的指针,如下

void func()
{
}
int main()
{
	void (*pf)() = func;
	pf(); // 调用func

	//type 定义
	typedef void (*PF)(void);
    PF pf2;
    pf2 = print;
    pf2(); // 调用func	
}

qsort中的回调函数

#include <stdio.h>
#include <stdlib.h>
// 将 > 换位 < , 排序从大到小
int myComPare(const void * pa, const void * pb){
    return *(int *)pa > *(int *)pb ? 1:-1;
}
int main()
{
    int arr[10] = {2,1,3,4,6,5,7,8,9,10};
    qsort(arr,10,4,myComPare);
    for(int i=0;i<10;i++)
    {
        printf("%d\n",arr[i]);
    }
    return 0;
}
运行结果:
1
2
3
4
5
6
7
8
9
10

自实现排序的回调函数

#include <stdio.h>
#include <stdlib.h>
int ComPare(int a, int b)
{
    return a>b?1:0;
}
void selectSort(int *p,int n,int (*pf)(int a,int b))
{
    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[j];
                p[j] ^= p[i];
                p[i] ^= p[j];
            }
        }
    }
}
int main()
{
    int arr[10] = {2,1,3,4,6,5,7,8,9,10};
    selectSort(arr,10,ComPare); 
    for(int i=0;i<10;i++)
    {
        printf("%d\n",arr[i]);
    }
    return 0;
}
运行结果:
1
2
3
4
5
6
7
8
9
10


相关推荐

  1. C++ 函数指针函数

    2024-04-11 22:38:05       47 阅读
  2. C 函数指针函数

    2024-04-11 22:38:05       32 阅读
  3. C语言函数指针函数

    2024-04-11 22:38:05       46 阅读
  4. C语言中的函数指针指针函数函数

    2024-04-11 22:38:05       53 阅读
  5. C语言:指针函数

    2024-04-11 22:38:05       35 阅读
  6. C系列」C 函数指针/函数

    2024-04-11 22:38:05       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 22:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 22:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 22:38:05       82 阅读
  4. Python语言-面向对象

    2024-04-11 22:38:05       91 阅读

热门阅读

  1. NEFU算法设计与分析实验二

    2024-04-11 22:38:05       34 阅读
  2. 蓝桥杯赛前模拟

    2024-04-11 22:38:05       39 阅读
  3. Bonnie++ 工具学习记录

    2024-04-11 22:38:05       33 阅读
  4. vue中404解决方法

    2024-04-11 22:38:05       30 阅读
  5. 力扣日记4.10-【动态规划篇】343. 整数拆分

    2024-04-11 22:38:05       37 阅读
  6. php调用SQL的增改查

    2024-04-11 22:38:05       36 阅读
  7. 数据结构面试

    2024-04-11 22:38:05       41 阅读
  8. SVN客户端异常问题处理

    2024-04-11 22:38:05       33 阅读
  9. leetcode209--长度最小的子数组

    2024-04-11 22:38:05       41 阅读