函数指针和回调函数

/* 指针函数 */
/* 
   (__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));

 

发布了18 篇原创文章 · 获赞 2 · 访问量 6046
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章