EasyC++,函数指针之一

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

 [[434323]]

大家好,我是梁唐。

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

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

函数指针

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

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

获取函数地址

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

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

  1. func(think); 

声明函数指针

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

  1. double process(int); 

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

  1. double (*pt)(int); 

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

函数指针传参

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

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

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

调用函数

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

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

如:

  1. double process(int); 
  2. double (*pt)(int); 
  3.  
  4. pt = process; 
  5. cout << (*pt)(5) << endl; 

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

 

责任编辑:武晓燕 来源: Coder梁
相关推荐

2021-12-12 18:13:54

C++This指针

2021-11-09 10:38:16

C++Const指针

2021-12-09 10:56:50

函数C++原型

2021-10-27 16:27:20

C++指针操控

2021-12-10 10:45:36

C++函数Stock

2021-12-11 19:02:03

函数C++对象

2021-12-29 20:31:40

C++多态指针

2021-10-29 09:44:50

C++指针变量

2021-11-30 11:04:36

C++函数语言

2021-11-26 00:03:20

C++编译常量

2021-12-30 14:58:58

C++函数动态

2021-12-08 10:43:09

C++实现

2021-10-26 00:19:51

C++结构体存储

2021-11-27 11:50:09

C++静态持续

2021-10-26 15:36:17

C++枚举值类型

2021-12-05 18:20:42

C++空间特性

2021-12-15 10:25:57

C++运算符重载

2022-01-04 16:35:42

C++Protected关键字

2021-10-31 20:24:24

C++for循环

2021-12-16 10:40:11

C++运算符重载
点赞
收藏

51CTO技术栈公众号