C++ 将函数作为形参
今天偶然看到一段代码,其中将函数作为形参进行设计,一开始不理解,自己试了一下,发现果然可行
#include <iostream>
using namespace std; void visit(int *p)
{
cout << *p << " ";
} void seeAll(int *array, void(* formalParameterFunc)(int *p), int length)
{
for (int *p = array; p < array + length; p++)
{
formalParameterFunc(p);
}
cout << endl;
} int main()
{
int a[] = { , , , , , , , , , , };
seeAll(a, visit, sizeof(a)/sizeof(a[]));
return ;
}
//最后输出为 1 2 3 4 5 6 7 8 9 0 11
seeAll函数设计了三个形参, 其中 void (* formalParameterFunc) (int *p)解释如下:
- formalPatameterFunc先与*结合,说明它是个指针
- 然后(* formalParameterFunc)与后面的(int *p)结合,说明(* formalParameterFunc)是一个函数,其返回值是void类型
所以,formalParameterFunc是个指向函数的指针,该被指向的函数的返回值是void,该被指向的函数的形参是int* 类型的变量;在seeAll执行的过程中,需在该位置传入一个满足该要求的函数型实参(本例为visit函数)
注:seeAll函数中可以设计为不用传入函数实参,使用时直接调用visit即可,本例只是示范“将函数作为形参”这一用法而已,即可将上述的seeAll函数修改如下,可达到一样的效果
void seeAll(int *array, int length)
{
for (int *p = array; p < array + length; p++)
{
visit(p);
}
cout << endl;
}
C++ 将函数作为形参的更多相关文章
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
- JavaScript中函数的形参和实参的实现原理剖析
我们都知道JS里面参数的传递是可以不一样的,比如我们有一个函数: <script type="text/javascript"> function one(a,b,c) ...
- python编程语言 函数的形参
python编程语言 函数的形参的讲解: 我在交互模式中写了个函数: def adder(**args): sum=0 for x in args.keys(): sum+=args[x] retur ...
- es6入门3--箭头函数与形参等属性的拓展
对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...
- day10 十 函数、形参和实参
一.形参和实参 1.形参:在函数定义()中出现的参数形参就是拷贝实参的值,随着函数的调用才产生,随着函数调用结束而销毁 def fn(a, b, c): print(a) print(b) print ...
- C++中函数的形参为数组时,实质形参是指针
C++中函数的形参如果为数组的话,那么进行实参传递时,实参实际上换转化成指针.参考下面的例子: #include<iostream> using namespace std; void f ...
- js 函数中形参与实参的关系
函数中形参与实参的关系 对于形参和实参的定义,在 权威指南中有着明确的定义.但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参? 形参到底会不会影响到实参? 对于这个问题的答案,请先看以下两 ...
- c语言中函数的形参test(int *&a)?
今天在看一段c代码的时候看到一个函数的形参是(int *&a)居然是这个东西,这让我好生疑惑啊,不知道用这么多的地址符号用意何在呢?传址么? 那也不必这样,只需要用指针完全能够达到这样的效果啊 ...
- python学习第三十天函数的形参,实参及函数文档
python函数的形参是定义函数def 函数名 小括号里面的变量,实参是调用函数时候的值,函数文档是提供函数功能的开发文档,下面 详细说明系列方法 1,函数的形参 def chan(name): pr ...
随机推荐
- RSA简介(一)——数论原理
RSA是最常用的非对称加密算法. 所谓非对称加密,就是说有两个密钥,一个密钥加密只可以用另外一个密钥解密,一般一个作为公钥,公开给所有人用来加密用,而另一个用来解密其他拥有公钥的加密结果,叫做私钥.另 ...
- [补档][HNOI 2008]GT考试
[HNOI 2008]GT考试 题目 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2... ...
- kafka使用场景
kafka使用场景 消息 Kafka被当作传统消息中间件的替代品.消息中间件的使用原因有多种(从数据生产者解耦处理,缓存未处理的消息等).与大多数消息系统相比,Kafka具有更好的吞吐量,内置的分区, ...
- inet_ntoa将客户端的IP和port写入M…
问题:inet_ntoa将客户端的IP和port写入MYSQL中的解决方法和遇到的问题
- 分布式事务,EventBus 解决方案:CAP【中文文档】
前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下这篇文章. 本文档为 CAP 文献(Wiki),本文献同 ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第三节--abp分层体系及实体相关
说了这么久,还没有详细说到abp框架,abp其实基于DDD(领域驱动设计)原则的细看分层如下: 再看我们项目解决方案如下: JCmsErp.Application,应用层:进行展现层与领域层之间的协调 ...
- python--DenyHttp项目(2)--ACM监考客户端测试版☞需求分析
写脚本之前,先写个需求分析 以后会多写一些脚本,会注意这方面的 禁止HTTP请求☞需求分析 核心功能: 通过修改Hosts文件,禁止用户访问百度等搜索引擎 实现方法: 通过CMD控制台命令COPY覆盖 ...
- NYOJ--21--bfs--三个水杯
/* 输入 第一行一个整数N(0<N<50)表示N组测试数据 接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V1<100 V3> ...
- Exceptionless 本地部署踩坑记录
仅已此文记录 Exceptionless 本地部署所遇到的问题 1.安装ElasticSearch文本 执行elasticsearch目录中的elasticsearch.bat 没有执行成功. 使用命 ...
- CSS3 基础(1)——选择器详解
CSS3选择器详解 一. 属性选择器 在CSS3中,追加了三个属性选择器分别为:[att*=val].[att^=val]和[att$=val],使得属性选择器有了通配符的概念. 选择器 示例 描述 ...