c++笔记(class16.5)函数指针

函数的本质

函数前面的int,代表的是函数的返回值的类型
函数指针
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用其他名字来替换复杂的名字

通过上面的强制转换引出了问题:类型名字复杂容易出错
方法一:typedef int(*PfAdd)(int, int);【这样就用PfAdd替换了int(*)(int, int)
方法二:using pFadd = int(*)(int, int);【这样就用pFadd 替换了int(*)(int, int)
这样上面图片强制转换的代码可以改成:int (*Padd)(int, int) = (PfAdd)Add;

在这里插入图片描述

#include <iostream>
#include <bitset>

typedef int(*PfAdd)(int, int);//声明一个函数指针类型
using pFadd = int(*)(int, int);//声明一个函数指针类型

float Add(int a, int b)
{
    return (a + b)/2;
}

int main()
{
    int (*Padd)(int, int) = (PfAdd)Add;//声明函数指针

    PfAdd ad = (PfAdd) Add;
    std::cout << Padd(1, 2) << std::endl;
    std::cout << Padd << std::endl;//函数指针的地址
    std::cout << ad(2, 3);



}

举例:结构体

注意理解下面代码

using Prole = int(*) (int hp, int mp);

struct Role
{
    int hp;
    int mp;
};
//padd函数参数只有一个,【Role rl】;但是我使用函数指针去处理时,可以传入两个参数
int padd(Role rl)
{
    return rl.hp + rl.mp;
}
int main()
{
    Role rl{ 100,200 };
    Prole ad = (Prole)padd;//在这里我用新的类型去进行转换【Prole】
    std::cout << ad(100, 350);
}

在这里插入图片描述

> 思考:既然定义了函数指针,新的类型,可以考虑将其作为形参放到函数内
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值