函数指针(函数作为参数传递给其他函数)
函数也有地址,函数的地址是存储其机器码的内存的开始的地址,并且函数的地址就是其函数名。因此我们可以将函数作为参数传递给其他函数。正如python中可以将函数轻易的传递给其他函数一样,但是C++中形式上会复杂一些。
声明函数指针:
如下我们声明了一个函数指针pf,稍后我么将让其指向一个函数:
void (*pf)(int)
我们可以将(*pf)看成一个整体,这样其实上述代码与声明一个函数很像,只是将函数名换成了(*pf),因此我们可以记住:声明函数指针就是将函数声明中的函数名换成(*指针名)。
需要注意的是,函数指针要指向的函数的返回值与参数列表必须与函数指针一致,即根据上面代码中的函数指针,我们指向的函数返回值为void,且应有一个int型参数。
将函数指针指向函数:
void my_func();
void (*pf)()
pf = my_func;
上面代码,我们声明一个函数my_func以及一个函数指针pf,并通过pf=my_func来将my_func函数的地址给pf来实现将函数指针指向函数。
函数指针的调用:
函数指针接收到函数后有两种方法可以调用:
以上面函数指针pf为例:
1、(*pf)()
2、直接pf()
第二种方式更为简洁,然而使用第一种方式更能够清楚的让别人知道你在使用函数指针。
用函数指针将函数作为参数传递给函数:
#include <iostream>
using namespace std;void print_func(void (*pf)())
{(*pf)();cout << "print is done!" << endl;
}void my_func()
{cout << "the call of my_func" << endl;
}int main()
{print_func(my_func);system("pause");return 0;
}
上面代码中print_func函数中的函数指针接受my_func函数:void (*pf)() = my_func。
结果:
函数指针(函数作为参数传递给其他函数)相关推荐
- c++ 函数指针_进化论——从函数指针到被结构封装的函数指针及参数的应用举例...
↑↑↑ 点击上方公众号名称关注,不放过任何转变的机会. ✎ 编 者 悟 语 借口再小也会瓦解人的意志. 文 章 导 读 今天带大家用下函数指针,然后将函数指针和函数参数封装到结构体中,接着将数据用动态 ...
- 使用 typedef 定义函数指针,更优雅的使用函数指针
简介 关于函数指针的介绍,这里就不做过多说明了,不了解的同学可以看看这篇博客: https://blog.csdn.net/afei__/article/details/80549202 使用 typ ...
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数...
1.指针数组 数组里面的每一个元素都是指针. 指针数组的案比例如以下: 易犯错误: 2.数组指针 归根结底还是指针,仅仅是取*的时候可以取出一整个数组出来. 数组指针:(一个指针指向了数组.一般 ...
- 使用函数指针来编写一个名叫sort的函数,它用于对一个任意类型的数组进行排序。
编写一个名叫sort的函数,它用于对一个任意类型的数组进行排序.为了使函数更为通用,它的 其中一个参数必须是一个指向比较回调函数的指针,该回调函数由调用程序提供.比较函数接受 两个参数,也 ...
- c语言函数指针 的定义方法,C语言 函数指针一(函数指针的定义)
//函数指针 #include #include #include //函数指针类型跟数组类型非常相似 //函数名就是函数的地址,函数的指针,对函数名进行&取地址操作,还是函数名本身,这是C语 ...
- 《C和指针》—— 第13章 函数指针的作用1:回调函数2(与模板结合,简化代码)
注意:此为原创文章,未经同意,请勿随意转载. 目录 1. 问题与思路 2. 具体实现 3. 结果截图 1. 问题与思路 Q:实现一个与类型无关的比较函数,且考虑模板,精简代码 A:声明一个函数指针,函 ...
- C++:函数指针进阶(四):函数对象operator()
C++中的 operator() 有两大主要作用: 1:Overloading --------重载() 操作符 2: Casting------实现对象类型转化 1:Overloading重载() ...
- 几种用函数指针方式来访问类成员函数的方法总结
前提:假设成员函数不访问类的成员变量. 环境:DEV-C++,别的环境有可能编译无法通过. 代码如下: #include <iostream> using namespace std; c ...
- 【 C 】初识函数指针
函数指针,顾名思义,也就是指针,不过这个指针是指向函数的指针. 在[ C ]高级指针话题之高级声明的演进 这篇博文中提到了函数指针的声明等,摘出来: 接下来的一个声明更有趣,但也更容易让人疑惑: in ...
- C++函数指针与回调函数
[转自]cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html 今天讨论下C/C++中的回调函数. 在理解"回调函数& ...
最新文章
- 通俗易懂地讲解 Java 的注解
- s10 linpus linux,上月国外最受关注NB排行 超便携本占优
- python -m xxx.py 模块启动与直接启动python xxx.py 的区别,就是对sys.path的修改不同,导致可以调用的模块范围就不一样
- 如何判断一个对话机器人有多智能?
- 【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )
- 14-python基础3-数据类型
- mysql连接串指定编码_MYSQL创建数据库时候直接指定编码和排序规则
- 设计模式-----单例模式优缺点及使用场景
- android context.java_Android / Java类范围和Context
- 用Java打开一个网页
- python脚本-记录Python脚本的运行日志的方法
- yum离线下载rpm包
- 《微店赚钱一册通 ——开店+营销+推广 实战全攻略》一一1.5 微店有哪些优势...
- JSON Viewer丨Json格式查看器
- js监听移动端横屏和竖屏状态
- Android Studio应用Freeline光速编译APK
- 《富爸爸穷爸爸》读书笔记
- JavaScript实现EAN13条码校验
- HTML5和CSS3新特性有哪些
- 生成Solr增量索引配置xml