Re: [問題] 請教關於函式指標的問題...
※ 引述《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
推
03/24 12:17, , 1F
03/24 12:17, 1F
推
03/25 23:11, , 2F
03/25 23:11, 2F
→
03/25 23:11, , 3F
03/25 23:11, 3F
討論串 (同標題文章)