typedef int(*lpAddFun)(int,int)的意思是什么?

linen_lucky 2010-12-17 08:24:57
刚才那个没问清楚也没发编辑 再发一个

typedef int(*lpAddFun)(int,int)
addFun = (lpAddFun)GetProAddress(hDll,"add"); 这个又是什么意思?

add和hDll是这么定义的
int add(int x,int y)
{
return x+y;
}
我想问的是下面这种引用

int result = addFun(2,3);

addFun(2,3)是怎么调用的?是把(2,3)传递给add(2,3)? 还是传递给GetProAddress?
...全文
315 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linen_lucky 2010-12-17
  • 打赏
  • 举报
回复
谢谢大家 非常感谢 分不多就每个人都分点
pluminsnow 2010-12-17
  • 打赏
  • 举报
回复
1、

typedef int(*lpAddFun)(int,int)
//上面这句定义了一个函数指针类型,把lpAddFun定义为指向符合 int funcname(int, int)形式的函数,lpAddFun类型的变量可以指向任意符合这个形式的函数,例如你的int add(int x,int y)
addFun = (lpAddFun)GetProAddress(hDll,"add");//你的代码没体现,但是应该有一句定义addFun 的语句,例如lpAddFun addFun;这句代码使函数指针变量addFun指向了你的函数int add(int x,int y),类似于你已经有了定义int addFun(int x,int y)


2、addFun(2,3)是怎么调用的?是把(2,3)传递给add(2,3)? 还是传递给GetProAddress?
答:根据上面所说的,很明显是传递给了add(2,3)
aoxixiaojun 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aoxixiaojun 的回复:]

C/C++ code
typedef int(*lpAddFun)(int,int);
addFun = (lpAddFun)GetProAddress(hDll,"add");



1. 首先, typedef为已存在的数据类型(data type)创建一个别名. 那么语句
C/C++ code
typedef int(*lpAddFun)(int,int);
的意思 lpAdd……
[/Quote]此时便指向了代码段的 int add( int x, int y).
aoxixiaojun 2010-12-17
  • 打赏
  • 举报
回复
补充, 第2点中, addFun的声明不为void*. 上面说错了!
aoxixiaojun 2010-12-17
  • 打赏
  • 举报
回复
typedef int(*lpAddFun)(int,int);
addFun = (lpAddFun)GetProAddress(hDll,"add");


1. 首先, typedef为已存在的数据类型(data type)创建一个别名. 那么语句
typedef int(*lpAddFun)(int,int);
的意思 lpAddFun 便是函数指针 int (*) (int, int)类型的别名.
2. addFun 的声明要么是void*类型, 要么就是 lpAddFun类型(或者直接声明为 int (*addFun )(int
, int ). 那么语句
addFun = (lpAddFun)GetProAddress(hDll,"add");
则实现使用实参 hDll和"add" 返回函数 int add( int x, int y) 的地址, 强制转换之后赋值给addFun. 那么addFun此时便指向了代码对的 int add( int x, int y).

此时, 使用addFun( 2, 3)实际上(从外观上看)就是 add( 2, 3 ).
也就是实参2和3, 是传递给了 int add( int x, int y) 了.
zyyoung 2010-12-17
  • 打赏
  • 举报
回复
google, typedef复杂结构
sduxiaoxiang 2010-12-17
  • 打赏
  • 举报
回复
函数指针 返回int 参数int,int

给add

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧