Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151264
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-10 13:28
个人简介

仰望星空

文章分类
文章存档

2016年(22)

2015年(22)

我的朋友

分类: 嵌入式

2015-11-11 15:09:06

    通过process()的不同调用,从而传递不同的参数,在写本代码的过程中,纠正的我2个问题
(1)scanf("%d, %d",&a,&b);和scanf("%d  %d",&a,&b); 之间的用法不能混淆。。
(2)函数指针调用时是这样调用的 p(a,b),不用加*号。。//尽管定义的时候这样定义int (*p)()

点击(此处)折叠或打开

  1. #include "stdio.h"

  2. int main()
  3. {
  4.   int a, b;

  5.   int max(int a,int b);
  6.   int min(int a,int b);
  7.   int add(int a,int b);
  8.   int process(int a, int b, int (*p)()); //(*p)()是函数指针,也就相当于一个指针变量

  9.   printf("请输入两个数字:\n");
  10.   scanf("%d %d",&a,&b);
  11.   printf("a = %d,b = %d\n\n",a,b);

  12.   printf("max = ");
  13.   process(a, b, max); //相当于 p = max;

  14.   printf("min = ");
  15.   process(a, b, min); // p = min;

  16.   printf("add = ");
  17.   process(a, b, add); // p = add;

  18.   return 0;
  19. }




  20. int max(int a,int b)
  21. {
  22.     if (a > b) return a;
  23.     else return b;
  24. }


  25. int min(int a,int b)
  26. {
  27.     if (a < b) return a;
  28.     else return b;
  29. }


  30. int add(int a, int b)
  31. {
  32.     a = a + b;
  33.     return a;
  34. }


  35. int process(int a, int b, int (*p)())
  36. {
  37.     int c;
  38.     c = p(a ,b); // 想当于 max(a, b); min(a, b); add(a, b);
  39.     printf("%d\n", c);
  40. }


阅读(1245) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~