Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54834
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2018-08-26 01:30
文章分类

全部博文(51)

文章存档

2020年(2)

2018年(49)

我的朋友

分类: C/C++

2018-08-29 19:40:14



   01. 请算出下面程序的输出:


点击(此处)折叠或打开

  1. /*
  2.  * ft1101.c
  3.  *
  4.  * Created on: 2012-11-5
  5.  * Author: xiaobin
  6.  *
  7.  * Huawei face questions
  8.  */

  9. typedef int(FUNC1) (int in);
  10. typedef int(FUNC2) (int *, int *, int *);

  11. int inc(int a) {
  12.     return (++a);
  13. }

  14. int muti(int *a, int *b, int *c) {
  15.     return (*c = (*a) * (*b));
  16. }

  17. void show (FUNC2 fun, int arg1, int *arg2) {
  18.     FUNC1 *p = &inc;
  19.     int temp = p(arg1);
  20.     fun(&temp, &arg1, arg2);
  21.     printf("%d\n", *arg2);
  22. }

  23. int main(int argc, char* argv[])
  24. {
  25.     int a = 0;
  26.     show(muti, 10, &a);
  27.     return 0;
  28. }


    1.  show函数 - 参数值

          (1) fun = 乘积函数(muti)

          (2)arg1 = 10

          (3)arg2 = 0

   2. show函数 - 内部执行

          (1)指针p指向累加函数(inc)

          (2)temp值等于执行完累加函数,即11

         

        (3)执行乘积函数

                 参数1 :11

                 参数2:10

                 参数3:返回值

        (4)输出上面乘积函数的参数3(返回值)

                11 * 10 = 110



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