/* 指针函数 */
/*
(__type__*) function(int, int)返回的是指针地址,
(__type__) function(int, int)返回的是int型数据。
*/
/* 函数指针 */
/* 函数指针有两个用途:调用函数和做函数的参数。 */
/* __type__ (*function)(int, int) */
/*
只是一个指针,变量指针是指向一个变量的地址,
结构体指针是指向一个结构体的首地址,
而函数指针是指向一个函数的地址,
它是一种类型,比int,char高级的类型。
*/
/* 回调函数 */
int (*function)(int, int);
typedef int (*pfun)(int, int);
int Max(int a, int b)
{
return a > b ? a : b;
}
int Min(int a, int b)
{
return a < b ? a : b;
}
/* 函数指针调用例子 */
int Num1 = 20, Num2 = 30;
function = Max;
printf("Max is %d\n", function(Num1, Num2));
printf("Max is %d\n", (*function)(Num1, Num2));
function = Min;
printf("Min is %d\n", function(Num1, Num2));
printf("Min is %d\n", (*function)(Num1, Num2));
printf("------------\n");
pfun pf = Max;
/* 相当于定义了 int (*pf)(int, int); */
printf("Max is %d\n", pf(Num1, Num2));
printf("Max is %d\n", (*pf)(Num1, Num2));
pf = Min;
printf("Min is %d\n", pf(Num1, Num2));
printf("Min is %d\n", (*pf)(Num1, Num2));
typedef int (*test_callback_t)(int status);
int test_callback(int data)
{
printf("get data:%d\n", data);
return (data * 2);
}
int rt_data(int data, test_callback_t cb)
{
return ((*cb)(data));
}
/* 回调函数调用例子 */
printf("rt_data:%d\n", rt_data(10, test_callback));