函数指针
函数指针,即返回值为指针类型的函数。
函数指针:如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。
函数指针的定义:函数返回值类型 (* 指针变量名) (函数参数列表);
例如**int ( p)( ) ;
p先和* 结合,说明p是指针,指针指向的是一个函数,指向的函数无
参数,返回值类型为int。
1. 函数指针的使用
赋值方式
void (*p)()=NULL;//函数指针
void a();//函数
函数指针 = 函数名;//p=a;
函数指针 = &函数名;//p=&a;
调用方式
调用的两种方式:p() 或者( *p)()
void a()
{
printf("gooddasf");
}
int main()
{
void(*p)()=NULL;//定义函数指针
//两种赋值方式
//p = &a;
p = a;
p(); //调用方法一
putchar('\n');
(*p)();//调用方法二
while (1);
return 0;
回调函数
对于函数来说也可以作为函数的参数来传递。
首先至少要有 3 种类型的函数。
**主函数:**相当于整个程序的引擎,调度各个函数按序执行。
回调函数:一个独立的功能函数。
**中间函数:**一个介于主函数和回调函数之间的函数,登记回调函数,通知主函数,起到一个桥梁的作用。
void show(int*b, void(*p)(int*r))//回调登记函数
{
for (int i = 0; i < 3; i++)
{
p(&b[i]);
}
}
void p(int*a)