typedef??????很混乱啊

cyberkit 2004-03-18 06:09:27
#include<stdio.h>
#include<windows.h>
void main(void)
{int a;
typedef int(*pMax)(int a,int b);
HINSTANCE hDLL;
pMax Max;
hDLL=LoadLibrary("MyDll.dll");
Max=(pMax)GetProcAddress(hDLL,"Max");
a=Max(5,8);
printf("比较的结果为%d\n",a);
FreeLibrary(hDLL);
}

我总搞不清楚上面的 typedef int(*pMax)(int a,int b) 是什么意思.一般来说,typedef是用来定义一个数据类型的新名字,但这里是何意思啊?想来想去,只好这么解释:程序定义了一个指针PMax,由于函数名其实也是地址,所以typedef int(*pMax)(int a,int b)就是定义了一个指向某个函数的指针,后面的这个函数的参数.我就是这么个认为了,但还是不太清楚,兄弟们,你们能解释一下typedef吗,我好混乱啊

...全文
40 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
byyyyy 2004-03-18
  • 打赏
  • 举报
回复
typedef 定义类型的别名
lyr311 2004-03-18
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2562/2562078.xml?temp=.6805384

我曾经提过的这个问题!!!
cyberkit 2004-03-18
  • 打赏
  • 举报
回复
typedef的一般格式是这么个用法的:typedef a b,那么b就是a的别名了
但是我们仔细看typedef int(*DllMax)(int a,int b),在这里究竟谁是a,谁是b啊?

这个跟上面那个的格式有点不对应哦,我的脑袋比较死板,还请大家继续指正!!
junnyfeng 2004-03-18
  • 打赏
  • 举报
回复
typedef int(*pMax)(int a,int b); 自定义了一个指针函数
------------
没想到我偷懒写少“类型”两个字就要挨骂了 :(
Meyer 2004-03-18
  • 打赏
  • 举报
回复
typedef 定义类型的别名
函数指针也是类型当然可以使用typedef了
Darkay_Lee 2004-03-18
  • 打赏
  • 举报
回复
那岂不是违背了typedef的本意,它本来好象是用来重定义数据类型的语句,但现在用他来定义一个指针函数,我真的转不过弯啊~~~

==》没有违背typedef的本意:是函数指针类型而不是函数指针
我是这样理解的:
typedef int(*DllMax)(int a,int b);
DllMax max;
含义等价于
int (*max)(int a, int b);
也就是我们的一般理解:
typedef int MyType;
MyType a;
含义等价于
int a;
liem 2004-03-18
  • 打赏
  • 举报
回复
typedef int(*pMax)(int a,int b);
是定义了一种类型,这种类型是指向函数(该函数有二个整型参数,返回整型)的指针类型。
当用:
pMax Max;
相当于定义:
int (*Max)(int a,int b);
cyberkit 2004-03-18
  • 打赏
  • 举报
回复
typedef int(*pMax)(int a,int b); 自定义了一个指针函数??如果是这样,那岂不是违背了typedef的本意,它本来好象是用来重定义数据类型的语句,但现在用他来定义一个指针函数,我真的转不过弯啊~~~
junnyfeng 2004-03-18
  • 打赏
  • 举报
回复
typedef int(*pMax)(int a,int b); 自定义了一个指针函数

pMax Max; 定义了一个函数指针

a=Max(5,8);用Max这个指针起用自定义的函数,返回值给a
flyingbugs 2004-03-18
  • 打赏
  • 举报
回复
告诉你一个方法:
你把typedef后面的 看作和变量申明一样的就可以了,
比如:
typedef int INT; //看作是 和 申明一个int型变量INT(差不多^&^)
typedef void (*pFunc)(int, int); //看作是申明一个*pFunc函数
....
flyingbugs 2004-03-18
  • 打赏
  • 举报
回复
typedef int(*pMax)(int a,int b);

定义 一个指向
返回值为 int
参数为: int int
的函数指针

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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