看到上面的函數聲明int (*(*pf( )) ( )) ( )時是不是頭都大了?那它究竟表示的是什麼意思呢?今天我們就拿它分析一下。
分析原則
1.要確定聲明中出現的操作符的優先級,
2.要確定在聲明中標識符與某個操作符結合起來的時候有什麼意義,並由內向外逐步來解讀.
注意點
當指針解引用操作符*與一個表示函數的標識符結合時,表示這個函數的返回值是一個指針。例如 *a() 表示a是一個返回值為指針的函數。
解析過程
pf():pf是一個無參函數
*pf():pf是一個無參函數,它的返回值是一個指針
(*pf())():pf是一個無參函數,它的返回值是一個無參函數的指針
(*(*pf())()) (): pf是一個無參函數,返回值是一個無參的函數的指針,函數返回值是一個無參函數的指針
int (*(*pf( )) ( )) ( ):pf是一個無參函數,返回值是一個無參的函數的指針。這個函數的返回值又是一個無參數且返回值為int的函數的指針
尾言
複雜冗長的聲明不要怕麻煩,由內到外一步一步分析,到最後你會發現不過如此,好了,今天的內容就到這裡吧,看完這個文章希望大家能夠有點收穫吧,也希望大家能幫忙三連下,如果閣下C語言比較差的,二進制都不知道是什麼的同學,不妨關注下小編的專欄視頻教程
通俗易懂,深入淺出,一個視頻只講一個知識點。視頻不深奧,不需要鑽研,在公交、在地鐵、在廁所都可以觀看,隨時隨地漲姿勢,人人都可以學習的視頻教程
閱讀更多 C語言基礎 的文章