[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
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章的版权归属于【原创作者】; 转载或引用时请【保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/18519229