C语言: 函数指针 回调函数 函数指针数组

一 函数指针:


// 定义函数指针的格式:
// 返回类型(*函数指针变量名)(形参列表);

// 函数指针的特点:
// 函数指针的本质是一个指针类型
// 函数指针变量占用内存空间的大小为8字节
// 函数指针变量指向是一个函数,指向返回类型和形参列表一致的函数

// 函数指针的使用:
// 函数指针变量名当成一个函数名使用,函数名表示函数的入口地址
 

二 回调函数:

//回调函数的定义格式

返回类型(函数指针 ,形参列表)

//回调函数把函数指针作为形参使用

三 函数指针 回调函数代码:

#include<stdio.h>



int add_func(int a, int b);
int sub_func(int a, int b);

int cal_func(int(*func_p)(int x,int y),int x,int y){

return func_p(x,y);
}


int main(int argc, const char *argv[])
{
	//定义一个函数指针
	
	int (*func_p)(int x,int y);

	//函数指针的使用 
	func_p = add_func;
	printf("100+200 = %d\n",func_p(100,200));
	
	func_p = sub_func;
	printf("300-100 = %d\n",func_p(300,100));

	//回调函数的使用
	printf("111+111=%d\n",cal_func(add_func,111,111));
	printf("222-111=%d\n",cal_func(sub_func,222,111));

	return 0;
}


int add_func(int a, int b){

    return a+b;

}

int sub_func(int a, int b){

	return a-b;
}

四 实现结果:

 

五 函数指针数组:

定义函数指针数组的格式
   返回类型  (*函数指针数组名[元素个数])(形参列表)

函数指针数组的特点
        函数指针数组本质是一个数组
        函数指针数组的每个元素都是一个函数指针类型
        及函数指针数组的每个元素存储的都是一个函数的地址

函数指针数组的使用,
    取出函数指针数组的每个元素的值,然后将其当成一个函数名使用即可

代码和实现结果:

#include<stdio.h>



int add_func(int a, int b);
int sub_func(int a, int b);



int main(int argc, const char *argv[])
{
	//定义一个函数指针数组
	
	int (*func_p[2])(int x,int y) = {add_func,sub_func};

	//函数指针数组的使用
	//每一个元素的值都是函数指针
	
	printf("100 + 200 = %d\n",func_p[0](100,200));
	printf("1000 - 444 = %d\n",(*(func_p+1))(1000,444));

	return 0;
}


int add_func(int a, int b){

    return a+b;

}

int sub_func(int a, int b){

	return a-b;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值