请问这个指针该怎么理解?
一个菜鸟最近看到一段代码,觉得很是晦涩,麻烦大家帮忙看下<br /><br />typedef enum _ENUM_TYPE<br />{<br /> a,b,c,...<br />} ENUM_TYPE;<br /><br />typedef struct _STRUCT_TYPE<br />{<br /> int x;<br /> char y;<br /> int z;<br /> ...<br />} STRUCT_TYPE;<br /><br />typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);<br /><br />TYPE_A *p; //请问这个指针该怎么理解?多谢!函数指针
函数指针
typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);<br /><br />TYPE_A *p;<br /><br />可以有如下调用<br /><br />ENUM_TYPE M;<br /><br /><br />M = P(var);Re
我觉得错了..楼主没有给出TYPE_A的内容,无从考证,
typedef ENUM_TYPE (TYPE_A)(STRUCT_TYPE *var);<br />作为函数指针的定义如:<br />1 int (*fn)(int a,char b)//定义返回类型为整形,传递两个参数的函数指针fn.<br />2 int (*fn)(struct *b)//定义返回类型为整形,传递一个结构首址的函数指针fn。<br />3 ENUM_TYPE (*fn)(struct *b) //定义返回类型为枚举,传递一个结构首址函数指针。<br />4 ENUM_TYPE (TYPE_A)(struct *b) // TYPE_A 末列出,<br />;---------------------------------------------------------<br />假若: <br />typedef TYPE_A *fn ;//就是以上的3式<br />假若: <br />typedef TYPE_A int ;//就只能理解强制数据类型转换。上面有点BUG,把这调过来才正确。
假若:<br />typedef *fn TYPE_A ;定义 *fn 的另一名字TYPE_A<br />假若:<br />typedef int TYPE_A ;我觉得bxb_lhj是对的
M = p(var);<br />Re:
我认为他的TYPE_A前忘了一个*.<br /><br />而且TYPE_A *p也有问题.. <br />如果要定义一个函数指针类型的变量应该是 TYPE_A p<br /><br />调用的时候也不像bxb_lhj说的.而是M = (*p)(var);以前看的3点建议
别要考验自己的眼力<br />不要考验编译器的能力<br />不要考验同事的耐性楼上的三点建议经典,赞一个!
C/C++本来就是相当简洁明了的程序设计语言,别人为地把它搞繁杂了。
页:
[1]