将指针指向函数(*p)(int,int)

这篇博客探讨了如何使用指针来调用函数,通过定义三个简单的函数(返回最大值、最小值和两数之和),详细解释了指向函数的指针的概念。文中定义了一个名为handle的函数,其参数包括一个可以动态切换调用不同功能的函数指针,从而实现灵活的功能切换。在主函数中,handle函数被用来演示这种调用方式,成功输出了最大值、最小值和两数之和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了展示指针指向函数的功能,我们先来定义三个简单的函数:

int maximum(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;
 } 
 
 int minimum(int a,int b)
 {
 	if(a < b)
 		return a;
 	else
 		return b;
 }
 
 int add(int a,int b)
 {
 	return (a+b);
 }

相信这三个函数对大家来讲没什么难度,分别是返回较大值、返回较小值和返回两数之和。
那么有同学会问了,既然三个函数都那么简单,那这篇博客重点讲的是什么呢?
问得好,我们今天的函数的的确确很简单,不过我们要讲的重点可不在函数哦!


我们今天要讲的是指针,指向函数的指针。

定义了以上三个函数之后,我们再定义一个可以随心在以上三个函数的功能之间切换的函数:

 int handle(int a,int b,int (*function)(int,int))	//*function可以指向maximum/minimum/add中的任意一个 
{
	int answer = (*function)(a,b);	//调用*function所指向的函数 
	printf("%d\n",answer);
 } 

细心的同学会问了,我们这个函数的参数好像有点奇怪呀,第三个参数为什么和平常见到的不一样呢?
是的,我们的第三个参数指向的是另外的函数,其中前一个括号里的是一个指针,指向所要调用的函数的入口地址(关于“入口地址”,可以从我之前写的一篇文章中了解),而后一个括号里则是被指向的函数所需要的参数类型。

接下来我们看看主函数:

 	int a,b;
 	printf("请输入两个数:");
	scanf("%d%d",&a,&b);
	
	printf("两者中最大的数为:");
	handle(a,b,maximum);
	
	printf("两者中最小的数为:"); 
	handle(a,b,minimum);
	
	printf("两者之和为:");
	handle(a,b,add); 

输入两个数,然后依次调用上面所讲到的handle函数,通过handle函数分别调用文章开头的三个函数,实现输出最大值、输出最小值以及输出两数之和的功能。运行如下:

请输入两个数:23 98
两者中最大的数为:98
两者中最小的数为:23
两者之和为:121

以上就是本篇博客的全部内容了,这篇博客主要介绍了调用函数的新方法——使用指针,感兴趣的同学可以点赞加关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值