鱼C论坛

 找回密码
 立即注册
查看: 5275|回复: 1

这是 函数指针 的什么用法???

[复制链接]
发表于 2013-6-30 18:04:48 | 显示全部楼层 |阅读模式
1鱼币
typedf VOID (*PFUNMSG)(char*);
//只有一个char*型指针参数

PFUNMSG pFunMsg = (PFUNMSG)GetprocAddress(hmodule,"MsgBox"); //这里GetprocAddress是 windows api 第一个参数是句柄,第二个参数是Char*型的---指定要获取的函数地址的名称

有这么一个void MsgBox(char*)函数

貌似pFunMsg得到的地址是MsgBox函数的地址, 如果函数调用成功,返回值是DLL中的输出函数地址。

难道填写指向函数的指针变量也可以做强制转换,为何返回来的地址还要做强制转换呀。

pFunMsg("Hello First one");

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 19:09:43 | 显示全部楼层
typedef VOID (*PFUNMSG)(char*);
是定义一个类型 ------- 一个函数指针的类型
这样说吧,因为我们要拿回一个函数拿用,那么是不是要拿它的地址
不过一般的地址,如果类型不匹配会怎么样呀?
而我们知道的是想要的函数样子,如果我们不定义的话就会对应不上吧,计算机不是我们那样的聪明,
只有我们给他指示,它才会按我们的要求做。
PFUNMSG这是一个类型,好比int
PFUNMSG pFunMsg -----> pFunMsg 一个指针,保存的是一个函数的地址,而且还有其他的要求,是这个函数的返回值要为void,而且有一个参数,参数为char*的函数
后面是把得到的地址强转一下,这是为了把你想要的函数情况说给计算机知道,并且计算机知道这是你想要的。
解释得不好,希望对你有一点帮助吧,我语文不好,不好意思吖。
{:7_155:}支持一下。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-21 18:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表