函数指针&回调函数Callback

指针函数

指针函数:一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
声明格式:类型标识符 *函数名(参数表)

//指针函数,其返回值是一个int类型的指针,是一个地址
int* fun(int x,int y);

不同写法
int *fun(int x,int y)
int * fun(int x,int y)
eg:
typedef struct _Data
{
int a;
int b;
}Data;
//指针函数
Data* f(int a,int b)
{
return data;
}

注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值

函数指针

1>
函数指针:是一个指针变量,该指针指向这个函数,函数指针就是,指向函数的指针。
声明格式:类型说明符(*函数名)(参数)

//函数指针是需要把一个函数地址赋值给它
int (*fun) (int x,int y);
fun=Function;

2>
形式:typedef 返回类型(*新类型)(参数表)

pfun main; //定义一个void (*main)(void)

PS:
typedef:只对已有的类型进行别名定义,不产生新的类型;
define 只是在预处理过程对代码进行简单的替换
typedef unsigned int UINT32
UINT32 sum;

typedef int arr[3]; //arr 类型是int[3];(存放int型数据的数组)
arr a; // 定义一个数组:int a[3];

回调函数

回调的意思就是你事先调用一下事件绑定函数并把你的函数指针告诉它,等到那个事件发生的时候就会回过头调用你的函数。这是事件驱动的基本概念。
一种形式:

   typedef void (*funCallback)(void);   //声明
   void fun(void);                                 // 声明逻辑函数 
   funCallback  pfun  =fun;                  // 赋值                              
   pfun();         //调用

另一种形式:

//声明
typedef struct FUN
{
void (*funCallback) ();
}MY_FUN;
extern MY_FUN myfun;

void fun(void);
//初始化
myfun.funCallback=fun;

//引用
myfun.funCallback();
原文地址:https://www.cnblogs.com/sggggr/p/15023974.html