函数指针(上)

  阔别多日,也是重新写上了文章,今天跟大家分享一下我对于函数指针的一些看法

一 定义

  函数指针是指向函数的指针变量。它存储了函数的地址,可以通过函数指针调用函数,实现对函数的间接调用。函数指针的定义与普通指针类似,使用星号(*)来声明一个指向函数的指针变量。函数指针的类型由它所指向的函数的返回值类型和参数类型决定。这个是标准定义,我们不需要知道,首先我们可以做个类比,数组名表示的是数组首元素地址,那单独的函数名表示函数所在的地址,数组可以数组名+[ ]进行访问,也就是地址+[ ],那么函数也可以通过函数的地址+( )进行访问所以函数指针就是指向函数的指针,我们可以通过函数地址 + ( )的形式来进行调用

二 使用

  现在我们知道了有函数指针这个东西,并且知道了我们可以通过函数指针来调用函数,那么我们应该如何定义一个指针呢,请看如下代码

int Add (int x, int y)
{
    return x + y;
}

现在我们定义了一个Add函数,可以实现整形的加法,其返回值是int,两个参数也都是int,那么这个Add函数的函数指针就应该这样声明

int Add (int x, int y)
{
return x + y;
}
int main()
{
    int(*p)(int, int) = Add;

    return 0;
}

*表示p是一个指针,()我们知道是函数调用操作符,所以这里(*p)()表示*p是一个函数,(*p)

(int, int)表示调用的函数有两个参数, 都是int类型,int(*p)(int, int)这个int表示指针所指向的函数是int类型,那么现在我们就定义好了我们的函数指针p指向函数Add,那么我们如何使用p指针来调用Add函数呢,请看如下代码

int Add ()
{
return x + y;
}
int main()
{
    int(*p)(int, int) = Add;
    int ret1 = (*P)(2, 3);
    int ret2 = p(2, 3);


    return 0;
}

ret1 =  2 + 3 = 5, ret2 = 2 + 3 = 5,从这里我们就可以看到我们有两种方式来实现函数指针调用函数,一种就是(* + 函数指针)+(函数所需参数), 另一种是函数指针+(函数所需参数),这两种方法是完全等价的, 那么现在我们也已经知道如何使用函数指针调用函数了,那么肯定有朋友会有疑问,我直接调用函数不也一样吗,为什么要搞个函数指针出来多此一举?这个就是下一篇文章解决的东西,函数指针的应用,敬请期待。

十分感谢能读到这里的朋友,望共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值