指针作为C语言的精华,恰当的使用能极大地提高程序的效率。下面我们来看一下函数指针提高程序效率的例子。
先看一下函数指针如何定义。
例1:
fp为指向函数的指针,该函数有两个int型的参数,且其返回值为int型。
例2:
fp为包含5个元素的数组,该数组中的元素为指向函数的指针,所指向的函数有两个int型的参数,且其返回值为int型。
下面来看一个函数指针提高程序效率的例子。
例3:
做一程序通过输入数字1-5来选择加、减、乘、除、取模五种运算的一种,这五种运算分别用一个函数来实现。
我们最先想到的可能就是用一个switch()来对输入进行判断,然后调用相应的函数。
switch(i) { case 1: add(); break; case 2: sub(); break; case 3: mul(); break; case 4: div(); break; case 5: mod(); break; default: break; }
|
这样判断的次数最少为1次,最多为5次,平均为3次。
如果使用函数指针数组,定义如下:
void (*fp[])() = {NULL, add, sub, mul, div, mod};
|
调用相应的函数直接用如下语句:
可见无论是书写的效率还运行的效率都大大提高了。
当然,对计算机来说,多执行三五条指令的时间极短,可以忽略。但是,如果有很多个函数需要调用,那么用函数指针的效果就可以明显体现出来;而且,从代码的简洁性来看,也推荐使用函数指针而不是switch()。