lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[c/cpp]:指向函数的指针数组(函数指针的数组)

 

 

 

 

〇、说明:

 

  1、  函数指针:  一个指针,它指向一个函数。

 

  2、  函数指针数组:  一个指针数组,它的元素是函数指针。

 

 

 

 

一、程序代码

 1 [root@rocky:test]# cat  test.c
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 
 6 void msg(){
 7 
 8         int x=1, y=11, z=111;
 9 //      int *px=&x, *py=&y, *pz=&z;
10         int *p[3];
11         p[0]=&x;
12         p[1]=&y;
13         p[2]=&z;
14 
15         for(int i=0; i<3; i++)
16         {
17                 printf("\t[msg]#\t address\t:=\t%p\n",p[i] );
18                 printf("\t[msg]#\t value\t:=\t%d\n", *(p[i]));
19                 printf("\n");
20         }
21 }
22 
23 
24 void msg0(int x)
25 {
26         printf("\t[out]#\tinput\t:=\t%d\n", x);
27 }
28 
29 
30 void msg1(int x)
31 {
32         printf("\t[out]#\tinput\t:=\t%d\n", x);
33 }
34 
35 
36 void msg2(int x)
37 {
38         printf("\t[out]#\tinput\t:=\t%d\n", x);
39 }
40 
41 
42 void msg3(int x)
43 {
44         printf("\t[out]#\tinput\t:=\t%d\n", x);
45 }
46 
47 
48 // important
49 // array of functions
50 // void (*fun[])(int) = { msg0, msg1, msg2, msg3 };
51 void (*fun[4])(int) = { msg0, msg1, msg2, msg3 };
52 
53 
54 // test array of functions
55 void test_array_function(void (*function[])(int), int number)
56 {
57         printf("\n");
58         printf("\n");
59         for(int i=0; i<number; i++)
60         {
61                 // important
62                 (function[i])(i);
63                 function[i](i);
64 
65                 printf("\n");
66         }
67         printf("\n");
68         printf("\n");
69 }
70 
71 
72 int main(int argc, char *argv[], char *envp[])
73 {
74         msg();
75 
76         test_array_function(fun, 4);
77 
78         return 0;
79 }
80 [root@rocky:test]# 

 

 

 

二、运行结果

[root@rocky:test]# gcc -o test test.c && ./test
        [msg]#   address        :=      0x7ffcf1f33808
        [msg]#   value  :=      1

        [msg]#   address        :=      0x7ffcf1f33804
        [msg]#   value  :=      11

        [msg]#   address        :=      0x7ffcf1f33800
        [msg]#   value  :=      111



        [out]#  input   :=      0
        [out]#  input   :=      0

        [out]#  input   :=      1
        [out]#  input   :=      1

        [out]#  input   :=      2
        [out]#  input   :=      2

        [out]#  input   :=      3
        [out]#  input   :=      3



[root@rocky:test]# 
[root@rocky:test]# 

 

 

 

三、参考资料:

 

  1.  c函数指针与回调函数|菜鸟教程  -  https://www.runoob.com/cprogramming/c-fun-pointer-callback.html

 

posted on 2024-11-01 01:51  lnlidawei  阅读(7)  评论(0编辑  收藏  举报