前言:
此篇是针对 定义和使用指向函数的指针变量 的练习。
解题思路:
这是一个示意性的简单例子,说明怎样使用指向函数的指针变量。定义两个函数 max 和 min ,分别用来求较大数和较小数。在主函数中根据用户输入的数字是1或2,使指针变量指向 max 函数或 min 函数。
正文:
#include<stdio.h>
int main() {
int max(int,int); //函数声明
int min(int x,int y); //函数声明
int (*p)(int,int); //定义指向函数的指针变量
int a,b,c,n;
printf("please enter aand b:");
scanf("%d,%d",&a,&b);
printf("please choose 1 or 2:");
scanf("%d",&n); //输入1或2
if(n==1) p=max; //如输入1,使p指向max函数
else if(n==2) p=min; //如输入2,使p指向min函数
c=(*p)(a,b); //调用p指向的函数
printf("a=%d,b=%d\n",a,b);
if(n==1)printf("max=%d\n",c);
else printf("min=%d\n",c);
return 0;
}
int max(int x,int y) {
int z;
if(x>y) z=x;
else z=y;
return (z);
}
int min(int x,int y) {
int z;
if(x<y) z=x;
else z=y;
return (z);
}
程序分析:
在程序中,调用函数的语句是 ”c=(*p)(a,b);“ 。从这个语句本身看不出是调用哪一个函数,在程序执行过程中由用户进行选择,输入一个数字,程序根据输入的数字决定指针变量 p 指向哪一个函数,然后调用相应的函数。
总结:
运行结果:
①
输入a,b的值34和89,选择模式1。
②
输入a,b的值34和89,选择模式2。