- 1、定义函数指针
- 2、函数指针数组
- 3、回调函数使用
1.1、先定义函数类型,根据类型定义指针变量
int fun(int a)
{
printf("a=====%dn",a);
return 0;
}
// 返回值是int,参数是int的 FUN类型
typedef int FUN(int ); // FUN 函数类型
FUN* p1 = NULL; // 通过FUN 定义指针
// p1 = fun 和 p1 = &fun 含义一样
p1 = fun; // p1 指向fun函数
fun(5); // 传统写法
p1(6); // 函数指针变量,调用方式
1.2、先定义函数指针类型, 根据类型定义指针变量(常用)
typedef int (*PFUN)(int a); // 函数指针类型 PFUN p2 = fun; p2(7);
1.3、直接定义函数指针(常用)
int(*p3)(int) = fun; p3(8);2、函数指针数组
#include3、回调函数使用int fun(int a) { printf("a=====%dn",a); return 0; } int fun1(int b) { printf("b=====%dn",b); return 0; } int fun2(int c) { printf("c=====%dn",c); return 0; } int main(void) { // 函数指针数组 int(*p[3])(int) = {fun,fun1,fun2}; p[0](1); p[1](2); p[2](3); return 0; }
#includeint fun(int a) { printf("a=====%dn",a); return 0; } int fun1(int b) { printf("b=====%dn",b); return 0; } int fun2(int c) { printf("c=====%dn",c); return 0; } // 自定义一个 函数指针类型(返回值int,参数int,类型名F) typedef int(*F)(int); // 形参 f,需要返回值int,参数int的函数地址 void test(int a,F f) { // 通过函数指针调用函数 printf("%dn",f(a)); } int main(void) { // 通过传入函数不同,实现不同效果 test(1,fun1); return 0; }



