看個(gè)寶貝:int (*(*pf())())(),C語言解析高難度函數(shù)指針
2019-04-02 22:06 作者:C語言基礎(chǔ) | 我要投稿

看個(gè)寶貝

解讀過程
首先,要確定聲明中出現(xiàn)的操作符的優(yōu)先級(jí)。其次,要確定在聲明中標(biāo)識(shí)符與某個(gè)操作符結(jié)合起來的時(shí)候有什么意義。由于函數(shù)聲明的特殊性,當(dāng)指針解引用操作符*與一個(gè)表示函數(shù)的標(biāo)識(shí)符結(jié)合時(shí),表示這個(gè)函數(shù)的返回值是一個(gè)指針。例如 *a() 表示a是一個(gè)返回值為指針的函數(shù)。有了以上的基礎(chǔ),接下來我們就可以從聲明中的標(biāo)識(shí)符開始,按照操作符的優(yōu)先級(jí),由內(nèi)向外逐步來解讀:

最終的解讀結(jié)果冗長(zhǎng)拗口??梢钥闯觯@實(shí)際上是返回值為函數(shù)指針的函數(shù)的遞歸。下面是可讀性更強(qiáng)的等效代碼:

測(cè)試代碼

照操作符的優(yōu)先級(jí),由內(nèi)向外逐步來解讀,其實(shí)并沒有想象中的那么復(fù)雜哦。
標(biāo)簽: