通过process()的不同调用,从而传递不同的参数,在写本代码的过程中,纠正的我2个问题
(1)scanf("%d, %d",&a,&b);和scanf("%d %d",&a,&b); 之间的用法不能混淆。。
(2)函数指针调用时是这样调用的 p(a,b),不用加*号。。//尽管定义的时候这样定义int (*p)()
-
#include "stdio.h"
-
-
int main()
-
{
-
int a, b;
-
-
int max(int a,int b);
-
int min(int a,int b);
-
int add(int a,int b);
-
int process(int a, int b, int (*p)()); //(*p)()是函数指针,也就相当于一个指针变量
-
-
printf("请输入两个数字:\n");
-
scanf("%d %d",&a,&b);
-
printf("a = %d,b = %d\n\n",a,b);
-
-
printf("max = ");
-
process(a, b, max); //相当于 p = max;
-
-
printf("min = ");
-
process(a, b, min); // p = min;
-
-
printf("add = ");
-
process(a, b, add); // p = add;
-
-
return 0;
-
}
-
-
-
-
-
int max(int a,int b)
-
{
-
if (a > b) return a;
-
else return b;
-
}
-
-
-
int min(int a,int b)
-
{
-
if (a < b) return a;
-
else return b;
-
}
-
-
-
int add(int a, int b)
-
{
-
a = a + b;
-
return a;
-
}
-
-
-
int process(int a, int b, int (*p)())
-
{
-
int c;
-
c = p(a ,b); // 想当于 max(a, b); min(a, b); add(a, b);
-
printf("%d\n", c);
-
}
阅读(1279) | 评论(0) | 转发(0) |