函数指针和回调函数

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值