指针与函数

       在程序设计过程中, 我们通常都会定义一些函数, 在程序过程中(或者在运行时), 根据假定的条件(运行时情况), 由程序(程序)选择应该执行那个函数。由此,程序中经常会有很多的 if...else条件判断或者switch分支语句。用条件判断或者分支语句来处理这些情况,本是无可厚非,但这样做起来会使程序变得可读性不高,并且不易维护。

        但是,如果我们用指针与数组来实现,就会使这样的程序变得非常简单易懂,而且便于维护。

       设想有这样一个题目,要求用户从控制台输入命令,根据命令决定要做什么样的处理。那么我们就可以编写一个简单的程序实现打印(print)、查询(search)、增加(add)、删除(delete)和更新(update)功能。由此我们编写以几个函数(只给出函数原型):

        void     print(void);

        void     search(void);

        void     add(void);

        void     delete(void);

        void     update(void);

        int        checkInput(char *);   // 根据输入内容返回对应原索引值

       为了配合以上函数实现程序功能,定义以下数组:

       const    char  *order[] = {"print", "search" , "add" , "delete" , "update"};

       void (*orderFunc[ ] )(void) = {print, search, add, delete, update};

       其中,第一个数组是预先定义的可能会出现的命令,第二个数组是指向函数的指针数组。有了这两个数组,可以编写主函数如下:

       int main()
       {
             int orderIndex = -1;
             char order[10];
             while(orderIndex < 0)
            {

                 printf("mypro$");
                 gets(order);
                 orderIndex = checkInput(order);
            }
            orderFunc[orderIndex]();
            return 0;
        }

       当然,这里而有很多细节没有实现,因为这并不是我今天想要说明的问题。我想要说明的是,使用函数指针可以非常方便地实现我们想要的功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值