欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个函数指针的例子--int (* FunctionFound(char op))(int ,int) ;

程序员文章站 2024-01-05 16:26:52
此代码演示函数指针的例子,再windows下,利用gcc命令编译; 运行结果: 分析: 1、typedef int(*FP_CALL)(int,int); //定义一个函数指针类型,并不是一个函数指针; FP_CALL function_call; // 这一句才是定义一个函数指针; 2、 int ......

此代码演示函数指针的例子,再windows下,利用gcc命令编译;

 1 /*******************************************
 2  * this file is to test function pointer
 3  *
 4  *******************************************/
 5 #include <stdio.h>
 6 
 7 
 8 typedef int(*FP_CALL)(int,int);  //Defines a function pointer type
 9 
10 
11 int (*data_return)(int);  // Defines a function pointer of  global type
12 
13 int DataReturn(int a)
14 {
15   return a;
16 }
17 
18 int AddCaculate(int a,int b)
19 {
20     return (a + b);
21     }
22     
23 FP_CALL CallFunction(char op)
24 {
25     switch(op)
26     {
27         case '+' : 
28             printf("found the function AddCaculate \n");
29             return AddCaculate;
30             break;
31         default :
32             printf("the input error\n");
33         }
34     }
35     
36 int (* FunctionFound(char op))(int ,int) // this is a function whose return data is a function pointer;
37 {
38     return CallFunction(op);
39     }
40 
41 void main()
42 {
43     FP_CALL function_call;
44     int *p;
45     int a = 100;
46     
47     data_return = DataReturn;
48     
49     p = &a;
50     
51     function_call = FunctionFound('+');
52     
53     printf("hello my honey!!!\n");
54     printf("the function pointer data_return  address  is : %d \n",data_return);
55     printf("the function pointer *data_return address  is : %d \n",*data_return);
56     
57     printf("the (*data_return)(2) result is : %d .\n",(*data_return)(2));
58     printf("the   data_return(3)  result is : %d .\n",data_return(3));
59 
60     printf("the int pointer (*p) is : %d \n",*p);
61     printf("the int pointer p is : %d \n",p);
62     
63     printf("the function_call run result is :%d \n",function_call(10,12));
64     
65     /*  */
66     
67     }

运行结果:

一个函数指针的例子--int (* FunctionFound(char op))(int ,int) ;

分析:
  1、typedef int(*FP_CALL)(int,int);   //定义一个函数指针类型,并不是一个函数指针;
        FP_CALL function_call;   // 这一句才是定义一个函数指针;
  2、  int (*data_return)(int);    // 这个是直接定义一个函数指针;与1中,只是定义方法不同;
  3、FP_CALL CallFunction(char op)    //此函数的返回值为一个函数指针;
  4、int (* FunctionFound(char op))(int ,int)  // 此函数的返回值也是一个函数指针;此函数指针拥有两个int参数,返回值类型为int;
  5、data_return 和 *data_return 定义的地址是一样的;也就是说data_return(2);与(*data_return)(2);都可以调用函数指针所指向的函数;

上一篇:

下一篇: