在C++里,变量有指针,比如int *a;之类的,指针的用处是很大的,可以让程序操作过程更加灵活。
我写这篇文章是为了记录刚刚自己无师自通的函数指针和它的用法。
一般的函数用法类似这样【只是举个例子我懒得写return了_( •́ ω •̀ 」∠)/_】
int a(){ cout<<"这是a函数"; } a(); //输出结果:这是a函数
使用函数指针应该长成这个样子
int fun1(){ cout<<"fun1"; } int (*a)()=&fun1;//取fun1函数的地址,让a函数的指针指向fun1函数的地址 a(); //输出结果:fun1
为啥我会去想到这个呢,因为我想到了下面这个问题。
如果有一个程序流程,里面有非常多的可自定义元素,把这个流程分成很多函数去工作,如果只是普通的函数使用方法的话基本上是下面的情况:
void a(){ switch(自定义参数){ 根据参数case,假如情况很多的话那会是这个样子 case case case case case case case case case case case case case case case 或者一堆if语句 } }
要是这在类似绘图这样的快速循环里,看着都揪心(๑´Д`ก),因为判断也是要时间的,
所以我觉得这时候还是这么做比较好:
void fun1(){ } void fun2(){ } void fun3(){ } ....... ....... ....... //等等分别对应原先的判断语句 //在参数更改的时候改变一个函数指针就可以了 //改变参数时使用switch等按条件改变函数指针的指向 void (*a)()=&fun1或&fun2....... //然后在循环里的过程就少多了,否则每次循环都要switch一次,这和只在参数更改的时候判断一次的性能差异应该还是比较大的 while(1){ a(); }
这比较适合参数不会一直变的情况。
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。