函数指针和指针函数

在C++里面,相信很多初学的同学都会混淆这两个概念:函数指针,指针函数。

其实,顾名思义,函数指针就是—指向函数的一个指针,它的定义通常如下:

T (* fun )(T a, T b)

这是一个指向 “返回值为T类型,传入参数为两个T类型的函数"的指针。在实际使用中如下:

#include<iostream>

using namespace std;

int addFun(int a , int b)
{
    return a+b;
}

int minusFun(int a,int b)
{
    return a-b;
}

int main()
{
    int(*myFun)(int a, int b);
    int paramA = 2, paramB = 3;
    myFun = addFun;
    cout << myFun(paramA, paramB) << endl;
    myFun = minusFun;
    cout << myFun(paramA, paramB) << endl;
    return 0;
}
在例子里面,myFun是一个指向了形如int (int,int)的函数的指针,所以在后面使用的时候能够直接指向addFun和minusFun,从而调用这两个函数。

注意:定义函数指针的时候一定要跟函数的原型相匹配,不然调用的时候会出错。

而指针函数,实体上还是一个函数,只是返回的数据类型是个指针而已。

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读

const int * p — p is a pointer to const int

这里其实也能引用一下这个方法,把 * 读成:a pointer to

那么,

T (* fun )(T a, T b) 则可以读成:fun is a pointer to T(T a , T b); 

T * fun(T a, Tb) 则可读成: fun(T a,T b) returns a value is a pointer to T;

以上均为个人见解,如有错误,请纠正


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值