作者sandwichC (没回应=挂站)
站内Programming
标题Re: [问题] 请教关於函式指标的问题...
时间Sat Mar 24 09:27:30 2007
※ 引述《bios (BIOS)》之铭言:
: 一个function pointer 的宣告可以如下:
: int (*pfn) (int);
: 那如果是如下的宣告 是代表什麽意思呢??
: int *(*pfn) (int);
: --- 多了一个 *
: 谢谢 ^^
关於复杂宣告的读法,我上个月才刚写完一篇文章
利用right-left rule来理解它
http://sandwichc.blogspot.com/2007/02/cc-pointer-reference.html#five
第一个用这个方法的人似乎是印度工程师Vikram
right-left rule:
「从最内层的括号读起,变数名称,然後往右,遇到括号就往左。当括号内的东西都解读完
毕了,就跳出括号继续未完成的部份,重覆上面的步骤直到解读完毕。」
你的例子其实熟悉function pointer的人都能一眼看出它的意义
但我们还是用right-left rule来解析它帮助理解:
int (*pfn)(int);
1. 从最内层的括号读起,变数名称,然後往右,遇到括号就往左。
--> (*pfn) --> pfn is a function pointer
2. 向右 --> (int) --> the function takes an integer as parameter
3. 向左 --> the function returns an integer
==> pfn 是一个指标函式,指向的函式接受int当参数并回传int
int *(*pfn)(int);
1. 从最内层的括号读起,变数名称,然後往右,遇到括号就往左。
--> (*pfn) --> pfn is a function pointer
2. 向右 --> (int) --> the function takes an integer as parameter
3. 向左 --> the function returns a pointer to integer
==> pfn 是一个指标函式,指向的函式接受int当参数并回传int* (pointer to int)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.169.117.116
1F:推 ephesians:这跟lexical analysis有关 218.160.210.49 03/24 12:17
2F:推 avhacker:我之前就贴过了,原文在 code project: 140.123.19.235 03/25 23:11