============【函数指针】====================
指向函数的指针;
函数是有地址的;
函数指针存储了函数指令的起始地址;
声明一个函数指针:需要指明函数返回类型和形参类型;
int (*fp)(int,int);
*fp为一体,说明了指针类型;*fp需要用括号括起来;
还可以结合typedef为函数指针类型起一个新名字:
typedef int (*myFun)(int,int); //现在这种类型的函数指针新名字叫做myFun
可以这样定义函数指针:
myFun f1;
这样注册回调时候,只要把回调函数名作为参数,写进注册器中就可以了。
============【指向数组的指针】====================
int (* arrPtr)[10] = NULL; // 一个指针,它指向一个有10个int元素的数组
void Func(int (*array)[10]); 注意*array需要用括号括起来。
这种形式的声明参数是一个指针,它指向具有10个元素的一维数组。因为[]的优先级比*的优先级高,故*array必须用括号括起来