老码识途 函数指针

调用函数需要函数的参数表返回类型调用惯例 这三点合在一起就是函数原型
一个函数指针包含函数的入口地址函数原型两个方面;
例如 int add(int a,int b) 定义一个函数指针:int (* P) (int ,int);(调用惯例默认是c方式,若不是则要标出,如int (_stdcall* P) (int ,int));
使用时:P=add 或 p=&add;
C语言指针类型包含两方面信息,一是地址,存放在指针变量中;二是类型信息,关乎读写长度,没有存储在指针变量中,位于用该指针读写时的move指令中,不同的读写长度对应的mov指令不同。
关于函数指针的类型强制类型转换:与数据指针一样,函数指针在转换赋值的时候,除了赋值地址没有多余的动作。起效时是在调用函数的时候,编译器会按其原型产生不同的代码。
类中函数指针和普通的函数指针形式一样,但调用惯例和参数实际上是不一样的:
typedef void (p)(A); //调用惯例是_cdecl
typedef void(A::P)(A);//调用惯例是_thiscall,形参中还有隐藏形参this指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值