函数指针利用

在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

本站文章未经文下加注授权不得拷贝发布。

0 0 投票数
打分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论