作者adrianshum (Alien)
看板Programming
標題Re: [問題] 關於function pointer
時間Tue Jan 26 16:00:33 2010
※ 引述《tiwei (∫期望dt=ivy + C)》之銘言:
: char *(*(*x)(void))[];
: what does the above statement declare?
: 想請教一下 最後那個[]代表的是什麼意思
: 還有要怎麼用typedef把這個東西拆解
: 如果方便的話..可以舉個例子寫一點code讓我參考一下
: 研究了很久還是不太懂阿..
: 感謝
推文有說到答案了 (好像正確吧?)
我也對這種很苦手.
理解這種 function ptr declaration 的方法有
一個叫 Right-Left-Rule.
用你的例子做一次示範:
char *(*(*x)(void))[] x 是
char *(*(*x
)(void))[] ptr to
(往右找, 但踫到關括號, 所以往左找)
char *(*(*x)
(void))[] function that takes no argument...
(跳出一層括號, 往右找)
char *(*(*x)(void)
)[] ... and return ptr to
(然後往左找)
char *(*(*x)(void))
[] .. to array of...
(跳出一層, 往右找)
char *(*(*x)(void))[] pointer to...
(往左找)
char *(*(*x)(void))[] char
(繼續往左)
重新說一次, 就是
x 是 一個 function ptr, 指向的 function
是 沒有 argument 及 return ptr to (array of char ptr)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
※ 編輯: adrianshum 來自: 202.155.236.82 (01/26 16:02)
推 okd:這東東真的很難看懂 推一個140.123.111.158 01/26 16:19
推 freesamael:大推解說118.168.115.217 01/27 00:11
推 softwind:就是模仿compiler分析關係 118.166.118.64 01/27 01:53
推 sunbig:不推不行 太贊的講講了220.135.250.104 01/27 14:23
推 tiwei:大感謝! 160.39.43.40 01/27 16:09
推 vity:非常清楚! 59.112.128.73 01/27 18:27