当前位置: 首页 > 科技观察

EasyC++,函数指针之一

时间:2023-03-21 16:55:34 科技观察

大家好,我是梁唐。这是EasyC++系列的第29篇,简单说说函数指针。想要追求更好阅读体验的同学可以点击“阅读原文”访问github仓库。函数指针函数指针,顾名思义,就是指向函数的指针。与数据类似,C++中的函数也有地址,函数的地址就是函数的机器语言代码所在的内存地址。我们可以将另一个函数的地址作为参数传入函数中,从而实现函数的灵活调用。获取函数地址获取函数地址的方法很简单,直接使用函数名即可(后面不要跟参数和括号)。比如我们有一个函数叫think,那么think()就是调用函数获取结果,think就是获取函数的地址。如果我们想将think函数作为参数传递给另一个函数,我们可以这样写:func(think);声明一个函数指针声明一个函数指针类似于声明一个函数,我们可以这样声明一个函数:doubleprocess(int);而当我们声明一个函数指针时,我们可以这样写:double(*pt)(int);如果我们用函数名替换(*pt),这实际上是一个函数声明。如果(*pt)是一个函数,那么pt自然是一个指向该函数的指针。函数指针传参如果我们要实现一个函数,它的一个参数就是一个函数指针,写法和前面一样:doublefunc(doublex,double(*pt)(int));在这个声明中,它的第二个第一个参数是一个函数指针。指向的函数采用int参数并返回double结果。调用函数最后,让我们看一下通过指针调用函数的部分。其实也很简单,因为前面我们说过,(*pt)的作用和函数是一样的。之前我们是通过函数名来调用函数的,所以只需要改成通过(*pt)调用即可。例如:doubleprocess(int);double(*pt)(int);pt=process;cout<<(*pt)(5)<