首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于简略函数指针表示的有关问题

2012-03-24 
关于简略函数指针表示的问题我看的教程是C++程序设计教程第二版,是清华大学出版的那本.教材中有一个问题弄

关于简略函数指针表示的问题
我看的教程是C++程序设计教程第二版,是清华大学出版的那本.教材中有一个问题弄不懂,怎么看也不明白.故询问下高手们,问题如下:
      首先有一个函数声明:
        int   func();
然后还有一条定义类型的:
        typedef   int   Func();
接着就是看不明白的地方了:
        int   (*func(int))   ();
是一个函数声明,即*func(int)的类型是int(),也就是;Func*   func(int)
它是返回一个函数指针的带有一个int参数的函数声明,该返回的函数指针类型为:int().
        关键是int   (*func(int))   ();是怎么就可以看成是Func*   func(int)的.
后者很好理解,但是那是怎么来的呢?用定义来看,也好像不太符合, "int   (*func(int))   (); "看起来跟一个函数指针声明类似,到底该如何理解呢?


[解决办法]
隐藏复杂和难以理解的语法
[解决办法]
若有函数int* func(int*); 则它的指针类型是这个样子:int* (*)(int*);

如果函数fx(int*)的返回值是这样的一个函数指针,则是

int* (* fx(int*))(int*);

看起来头晕,所以多用typedef,写成更加明了的形式.
同样令人头晕的是数组的指针.

[解决办法]
用右左法则来看:
int (*func(int)) ();
从func先向右看,碰到一个 '(int) ',表明func是一个函数,形参类型为int。
接着往右走,碰到右括号 ') ',掉转方向向左看,碰到 '* '号,表示func函数的返回类型是一个指针类型,具体为int(*)()类型的指针类型.

关于右左法则,论坛因该就有帖子介绍,楼主可以搜索一下

热点排行