为了展示指针指向函数的功能,我们先来定义三个简单的函数:
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
以上就是本篇博客的全部内容了,这篇博客主要介绍了调用函数的新方法——使用指针,感兴趣的同学可以点赞加关注哦!