指向函数的指针数组

来源:互联网 发布:李敖小s知乎 编辑:程序博客网 时间:2024/06/05 03:17

c里面的指针很重要,但学了c这么久了,都不知道指向函数的指针数组有什么用,其实和用函数指针差不多。

我们可以创建一个有趣的结构式指向函数的指针数组。为了选择一个函数,只需要使用数组的下标,然后间接引用这个指针。这种方式支持表格式驱动码(table-driven code)的概念;可以根据状态变量(或状态变量的组合值)去选择被执行函数,而不用条件语句或case语句。这种设计方式对于要从表中添加或删除函数(或者想动态的创建或改变表)十分有用。


#include<stdio.h>void fun1();void fun2();void fun3();void main(){void (*fun[3])()={fun1,fun2,fun3};//指向函数的指针数组的声明int a;printf ("请输入一个1,2,或者3.输入0退出。\n");scanf ("%d",&a);while ( a )  {   if( a==1 || a==2 || a==3 )    {     fun[a-1]();//通过函数指针调用数组中的函数     printf("请输入一个1,2,3.输入0退出.\n");     scanf("%d",&a);    }   else    {     printf("请输入一个合法的数(1-3).0退出。\n");    }  }}void fun1(){printf("函数f1被调用!.\n");}void fun2(){printf("函数f2被调用!.\n");}void fun3(){printf("函数f3被调用!.\n");}


其实C++中的虚函数也是这样实现的。