C++传递函数指针
函数指针是一个很好的类型。因此,您可以编写一个函数,它的一个参数是一个函数指针。然后。在(外部)当函数使用的函数指针参数,来间接调用时调用相应的参数的函数的函数。
因为指针在不同的情况下能够指向不同的函数。因此同意调用程序确定要从外部函数中调用哪个函数。
在用函数指针类型的參数调用函数时,參数能够仅仅包括函数地址的对应类型的指针。还能够把函数名作为參数,显示传送函数。
作为參数传送给还有一个函数的函数有时称为回调函数。
演示样例:
#include <iostream>
using std::cout;
using std::endl;
//函数声明
double squared(double);
double cubed(double);
double sum_array(double array[],int len,double (*pfun) (double));
int main(){
double array[]={1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5};
int len=sizeof array/sizeof array[0];
cout<<"Sum of squares = "<<sum_array(array,len,squared)<<endl;
cout<<"Sum of cubes = "<<sum_array(array,len,cubed)<<endl;
return 0;
}
//求平方和
double squared(double x){
return x*x;
}
//求立方和
double cubed(double x){
return x*x*x;
}
//对数组元素依照函数指针指定的函数处理后求和
double sum_array(double array[],int len,double (*pfun) (double)){
double total=0.0;
for(int i=0;i<len;i++)
total+=pfun(array[i]);
return total;
}
C++传递函数指针的更多相关文章
- C# c++ 传递函数指针
C#和c++之间相互传递函数指针 在C++和C#之中都有很多callback method,可以相互调用吗,怎么传递,是我表弟的问题. 1.定义c++ dll ,导出方法 // sort.cpp : ...
- delphi 中的函数指针 回调函数(传递函数指针,以及它需要的函数参数)
以下代码仅仅是测试代码:delphi XE7 UP1 interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.V ...
- 《笨办法学C》笔记之指针
C语言编程主要操作的对象就是指针. 指针从哪里来 指针就是表示内存存储区域的一组数值,使用%p格式化字符串. Linux系统会为程序维护两个临时变量存储位置:栈.堆.栈的空间少,栈通常在用户更高的地址 ...
- 深入理解C指针之三:指针和函数
原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回 ...
- C语言函数指针的使用
使用函数指针时一定要注意,因为c不会检查参数是否正确 区分返回指针的函数和函数指针 int *f4();返回一个整数指针 int (*f5)();返回整数的函数指针 int * (*f6)();返回整 ...
- 《深入理解C指针》
<深入理解C指针> 基本信息 原书名:Understanding and using C pointers 作者: (美)Richard Reese 译者: 陈晓亮 丛书名: 图灵程序设计 ...
- 深入理解C指针----学习笔记
深入理解C指针 第1章 认识指针 理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址. 1.1 指针和内存 C程序在编译后,以三种方式使用内存: 1. 静态. ...
- C指针的这些使用技巧,掌握后立刻提升一个Level
这是道哥的第016篇原创 关注+星标公众号,不错过最新文章 目录 一.前言 二.八个示例 1. 开胃菜:修改主调函数中的数据 2. 在被调用函数中,分配系统资源 2.1 错误用法 2.2 正确用法 3 ...
- C#与C/C++的交互zz
C#与C++交互,总体来说可以有两种方法: 利用C++/CLI作为代理中间层 利用PInvoke实现直接调用 第一种方法:实现起来比较简单直观,并且可以实现C#调用C++所写的类,但是问题是MONO构 ...
随机推荐
- 14.2.5.5 Change Buffer
14.2.5.5 Change Buffer change buffer是一个指定的数据结构 用于caches 数据到secondary index pages 当影响的pages 不是在buffer ...
- android使用篇(四) 注解依赖注入IOC实现绑定控件
在android使用篇(三) MVC模式中提到一个问题: 1) 视图层(View):一般採用XML文件进行界面的描写叙述,使用的时候能够很方便的引入,可是用xml编写了,又须要在Acitvity声明而 ...
- 如何在eclipse dump Java内存占用情况和打印GC LOG
当使用java开发应用程序发生内存泄露的时候,经常会需要dump内存,然后使用内存分析工具,比如Eclipse Memory Analyzer(一般称作MAT)工具. 本文将介绍如何在eclipse ...
- Nancy.Host的Web应用
Nancy.Host实现脱离iis的Web应用 本篇将介绍如何使用Nancy.Host实现脱离iis的Web应用,在开源任务管理平台TaskManagerV2.0代码里面已经使用了Nancy.Host ...
- datarow用linq查询
List<string> f_guids = (from DataRow dr in dt2.Rows select dr["f_GUID"].ToString()). ...
- 96 Stocks APIs: Bloomberg, NASDAQ and E*TRADE
Our API directory now includes 96 stocks APIs. The newest is the Eurex VALUES API. The most popula ...
- Android WebView挂马漏洞--各大厂商纷纷落马
本文章由Jack_Jia编写,转载请注明出处. 文章链接: http://blog.csdn.net/jiazhijun/article/details/11131891 作者:Jack_Jia ...
- NYOJ 914 Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 Yougth如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- XML实例文档
from: http://www.w3school.com.cn/xpath/xpath_examples.asp XML实例文档 我们将在下面的例子中使用这个 XML 文档: "books ...
- Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区
Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区 Caché Monitor 2.03发布,Caché的SQL开发工具