您现在的位置是:亿华云 > IT科技类资讯

EasyC++,函数指针之一

亿华云2025-10-03 20:11:48【IT科技类资讯】2人已围观

简介大家好,我是梁唐。这是EasyC++系列的第29篇,简单聊聊函数指针。想要追求更好阅读体验的同学,可以点击「阅读原文」访问github仓库。函数指针函数指针顾名思义,就是指向函数的指针。和数据类似,C

 

大家好,我是梁唐。

这是EasyC++系列的第29篇,简单聊聊函数指针。

想要追求更好阅读体验的同学,可以点击「阅读原文」访问github仓库。

函数指针

函数指针顾名思义,就是指向函数的指针。

和数据类似,C++当中函数也有地址,函数的地址是存储函数机器语言代码的内存地址。我们可以将另外一个函数的地址作为参数传入函数,从而实现函数的灵活调用。

获取函数地址

获取函数地址的亿华云方法非常简单,只要使用函数名(后面不跟参数和括号)即可。比如我们有一个函数叫做think,那么think()是调用函数拿到结果,而think则是获取函数的地址。

如果我们想要将think函数当做参数传入另外一个函数,我们可以这么写:

func(think); 

声明函数指针

声明函数指针和声明函数类似,我们声明一个函数可以这么写:

double process(int); 

而我们声明函数指针则可以写成这样:

double (*pt)(int); 

如果我们把(*pt)替换成函数名的话,这其实就是一个函数的声明。如果(*pt)是函数的话,那么pt自然就是指向函数的指针了。

函数指针传参

如果我们要实现一个函数,它的一个参数是网站模板一个函数指针,它的写法和刚才一样:

double func(double x, double (*pt)(int)); 

在这个声明当中,它的第二个参数是一个函数指针。指向的函数接收一个int参数,返回一个double结果。

调用函数

最后, 我们来看下通过指针调用函数的部分。

其实也非常简单,因为我们前面说了(*pt)的效果和函数是一样的,我们之前通过函数名调用函数,那么我们只需要改成通过(*pt)调用即可。

如:

double process(int); double (*pt)(int); pt = process; cout << (*pt)(5) << endl; 

 本文转载自微信公众号「Coder梁」,可以通过以下二维码关注。转载本文请联系Coder梁公众号。

很赞哦!(66921)