函数指针:定义一个指针,然后将函数地址赋值给这个指针,指针就等同于函数。
#include <stdio.h>
int max(int x, int y)
{
return x > y ? x : y;
}
int main(void)
{
int (* p)(int, int) = & max; // &可以省略
printf("最大的数字是: %d\n", p(2,3));
return 0;
}
回调函数就是一个通过函数指针调用的函数:编写一个函数,另一个函数可以用这个函数当参数。下面中excutef就是回调函数。
#include <stdio.h>
#include <stdlib.h>
int max( int x, int y )
{
return(x > y ? x : y);
}
int excutef( int (*func)( int, int ), int arga, int argb )
{
return( (*func)(arga, argb) );
}
int main( void )
{
printf( " %d\n", excutef( max, 1, 2 ) );
return(0);
}
把函数指针装入数组,然后调用:
#include <stdio.h>
int max(int x, int y)
{
return x > y ? x : y;
}
int min(int x, int y)
{
return x < y ? x : y;
}
int main(void)
{
int (*p[2])(int, int)={&max,&min};
printf("%d %d \n", p[0](2,3),p[1](2,3));
return 0;
}