c++ 函数指针相关总结
作者:流星斩月 发布时间:2022-09-26 04:42:33
标签:c++,函数,指针
下面随笔说明函数指针用法。
函数指针的定义:
定义形式:
存储类型 数据类型 (*函数指针名)()
含义:
函数指针指向的是程序代码存储区
函数指针的典型用途-----实现函数回调
通过函数指针调用的函数
例如将函数的指针作为参数传递给一个函数,使得在处理相似事件的时候可以灵活的使用不同的方法。
调用者不关心谁是调用者
需知道存在一个具有特定原型和限制条件的被调用函数。
获取函数指针:
函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。
声明函数指针
声明指针时,必须指定指针指向的数据类型,同样,声明指向函数的指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。
例如:
double cal(int); // prototype
double (*pf)(int); // 指针pf指向的函数, 输入参数为int,返回值为double
pf = cal; // 指针赋值
如果将指针作为函数的参数传递:
void estimate(int lines, double (*pf)(int)); // 函数指针作为参数传递
函数指针举例
#include <iostream>
using namespace std;
int compute(int a, int b, int(* func)(int, int))
{
return func(a, b);
}
int max(int a, int b) //求最大值
{
return ((a > b) ? a : b);
}
int min(int a, int b) //求最小值
{
return ((a < b) ? a : b);
}
int sum(int a, int b) //求和
{
return (a + b);
}
int main(void)
{
int a, b, res;
cout << "please input integer a:";
cin >> a;
cout << "please input integer b:";
cin >> b;
res = compute(a, b, &max); //输入max也可以,max也是表示地址
res = compute(a, b, &min); //输入min也可以,min也是表示地址
res = compute(a, b, &sum); //输入sum也可以,sum也是表示地址
return 0;
}
来源:https://www.cnblogs.com/iFrank/p/14444636.html
0
投稿
猜你喜欢
- Filter简介Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所
- 对于 * ,学过AOP的应该都不会陌生,因为代理是实现AOP功能的核心和关键技术。那么今天我们将开始 * 的学习:一、引出 * 生活中
- 目录批量更新同一张表的数据更新多条数据,每条数据都不一样java中for循环实现方式一条SQL,服务端逐条更新mybatis实现方式使用Fl
- JPA Specification常用查询+排序1.第一步:继承父类public interface TblCarton2RCardLogR
- 本文主要探究的是关于Bean的作用域、生命周期的相关内容,具体如下。Bean的作用域Spring 3中为Bean定义了5中作用域,分别为si
- Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完
- 1. 文件上传a. 看看@FIEL注解的属性/** * 上传文件时使用该注解 设置文件相关参数 */@Retention(Retention
- 前言项目流程图如下:这里我们通过:163邮箱来实现激活码发送qq邮箱来进行接收学习之前需要掌握的知识springboot的基本使用方法mys
- 本文实例为大家分享了Unity调取移动端的麦克风进行录音并播放的具体代码,供大家参考,具体内容如下1.对MicroPhone类的理解对麦克风
- 一、Arthas官方文档https://arthas.aliyun.com/doc/二、springBoot整合方式1、pom文件引入<
- Java 线程同步根本上是要符合一个逻辑:加锁------>修改------>释放锁1、同步代码块示例如下:public cla
- 1.查找数据库中表的列名<pre name="code" class="html">St
- 在C#绘制中国象棋棋盘是C#程序设计中GDI+的一个重要组成部分。这也是非常考验编程技巧的操作。在绘制之前首先要对棋盘有一个完整的认识。下面
- 这篇文章主要介绍了springboot2.0如何通过fastdfs实现文件分布式上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
- zip 是一个非常常见的压缩包格式,本文主要用于说明如何使用代码 文件或文件夹压缩为 zip压缩包及其解压操作,我们采用的是 微软官方的实现
- 1、配置 IDEA 的 Maven 环境单击菜单栏中的 File → Settings → Build, Ex
- 英文意思随机数可以做什么?生成一些随机的数字用途非常的广泛, 例如随机抽取数据库的一条记录,把生成的数字给变量,某一个时间点执行一些代码,随
- 1. Spark中的RDDResilient Distributed Datasets(弹性分布式数据集)Spark中的最基本的抽象有了RD
- 1.@Value注解@Value注解的源码,如下所示@Target({ElementType.FIELD, ElementType.METH
- 背景知识Fluent Interface是一种通过连续的方法调用以完成特定逻辑处理的API实现方式,在代码中引入Fluent Interfa