c++ 指针(二)

函数指针

可以使用算法的地址传递给方法,传递之前要先完成以下工作

1.获取函数的地址

2.声明一个函数指针

3.使用函数指针来调用函数

1.获取函数的地址,只要使用函数名就可以

 Fun2(Fun1);

Fun2就可以在程序内部调用Fun1()函数

2.声明函数指针

声明时一定要指定指针指向的类型。同样,声明指向函数的指针时,必须指定指针指向的函数类型。

如一个函数的原型为

int Fun1(int a);

指针类型声明:

int (*pt)(int);//只是将Fun1换成了 *pt  *pt 是函数, pt是函数的指针

//声明后赋值

pt = Fun1;

3.使用指针来调用函数

上面的声明说过 *pt和函数名是一样的,使用*pt和就可以调用 方法

int Fun1(int a);

int (*pt)(int);

pt = Fun1;

int _va = (*pt)(3);

也可以直接用pf

int _va=pt(3);

 写一个小例子

#include<iostream>
using namespace std;

int MyIntF(int a);
void MyIntFunP(int (*pt)(int),int va);
int main()
{    
    int (*pt)(int)=MyIntF;
    pt(1);

    MyIntFunP(MyIntF,2);
    cin.get();
}

int MyIntF(int a)
{
    cout<<a<<endl;
    return a+1;
}
void MyIntFunP(int (*pt)(int),int va)
{
    cout<<(*pt)(va)<<endl;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏calmound

JavaScript对象

5日期对象:var Udate = new Date(); ? 返回/设置年份方法:      get/setFullYear() var mydate=ne...

3615
来自专栏一个会写诗的程序员的博客

函数式编程与面向对象编程[4]:Scala的类型关联Type Alias函数式编程与面向对象编程[4]:Scala的类型关联Type Alias

scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型。

1173
来自专栏康怀帅的专栏

PHP 面向对象 接口

使用接口 interface,可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 要实现一个接口,使用 implements 操作符。 接口中定义...

3066
来自专栏猿人谷

金山试题

1. 结构POINT定义如下: typedef struct tagPOINT {          int x;         int y;     } ...

2206
来自专栏walterlv - 吕毅的博客

Roslyn 语法树中的各种语法节点及每个节点的含义

2018-07-18 12:24

2521
来自专栏前端小作坊

Javascript 原型链

本来想写一篇“如何用JS实现面向对象”,发现自己对prototype原型链还是有很多的不理解的地方。先看一张原型链关系图:

1311
来自专栏Albert陈凯

函数柯里化(Currying)和偏函数应用(部分应用函数)(Partial Application)的比较

【名词解释】Currying:因为是美国数理逻辑学家哈斯凯尔·加里(Haskell Curry)发明了这种函数使用技巧,所以这样用法就以他的名字命名为 Curr...

3825
来自专栏LIN_ZONE

php中的public、protected、private三种访问控制模式及self和parent的区别(转)

注:在子类覆盖父类的方法时一定要注意,在子类中重写的方法访问权限一定不能低于父类被覆盖的方法的访问权限。例如,如果父类中的访问权限是protected,那么在子...

1206
来自专栏alexqdjay

angularjs源码笔记(5.1)--parse

2745
来自专栏java学习

Java每日一练(2017/6/15)

题目要求 本期题目: 1、(单选题) What will be printed when you execute the following code? cla...

35610

扫码关注云+社区

领取腾讯云代金券