打印

请问这个指针该怎么理解?

[复制链接]
1739|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mathieu|  楼主 | 2008-4-21 19:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个菜鸟最近看到一段代码,觉得很是晦涩,麻烦大家帮忙看下

typedef enum _ENUM_TYPE
{
   a,b,c,...
} ENUM_TYPE;

typedef struct _STRUCT_TYPE
{
   int x;
   char y;
   int z;
   ...
} STRUCT_TYPE;

typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);

TYPE_A *p; //请问这个指针该怎么理解?多谢!

相关帖子

沙发
dld2| | 2008-4-21 19:28 | 只看该作者

函数指针

使用特权

评论回复
板凳
bxb_lhj| | 2008-4-24 14:30 | 只看该作者

函数指针

typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);

TYPE_A *p;

可以有如下调用

ENUM_TYPE M;


M = P(var);

使用特权

评论回复
地板
Swd21ic| | 2008-4-25 23:46 | 只看该作者

Re

我觉得错了..

使用特权

评论回复
5
宇宙飞船| | 2008-4-26 18:35 | 只看该作者

楼主没有给出TYPE_A的内容,无从考证,

typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);
作为函数指针的定义如:
1 int (*fn)(int a,char b)//定义返回类型为整形,传递两个参数的函数指针fn.
2 int (*fn)(struct *b)//定义返回类型为整形,传递一个结构首址的函数指针fn。
3 ENUM_TYPE (*fn)(struct *b) //定义返回类型为枚举,传递一个结构首址函数指针。
4 ENUM_TYPE (TYPE_A)(struct *b) // TYPE_A 末列出,
;---------------------------------------------------------
假若: 
typedef TYPE_A  *fn  ;//就是以上的3式
假若: 
typedef TYPE_A  int  ;//就只能理解强制数据类型转换。

使用特权

评论回复
6
宇宙飞船| | 2008-4-26 23:37 | 只看该作者

上面有点BUG,把这调过来才正确。

假若:
typedef  *fn  TYPE_A  ;定义 *fn 的另一名字TYPE_A
假若:
typedef   int  TYPE_A ;

使用特权

评论回复
7
hall919| | 2008-4-28 12:26 | 只看该作者

我觉得bxb_lhj是对的

M = p(var);

使用特权

评论回复
8
Swd21ic| | 2008-4-28 21:53 | 只看该作者

Re:

我认为他的TYPE_A前忘了一个*.

而且TYPE_A *p也有问题.. 
如果要定义一个函数指针类型的变量应该是 TYPE_A p

调用的时候也不像bxb_lhj说的.而是M = (*p)(var);

使用特权

评论回复
9
thw| | 2008-5-6 01:30 | 只看该作者

以前看的3点建议

别要考验自己的眼力
不要考验编译器的能力
不要考验同事的耐性

使用特权

评论回复
10
HWM| | 2008-5-6 08:13 | 只看该作者

楼上的三点建议经典,赞一个!

C/C++本来就是相当简洁明了的程序设计语言,别人为地把它搞繁杂了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

28

帖子

0

粉丝