在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
本站文章未经文下加注授权不得拷贝发布。