C語言超複雜的函數聲明,C語言小知識之複雜的函數聲明


C語言超複雜的函數聲明,C語言小知識之複雜的函數聲明

看到上面的函數聲明int (*(*pf( )) ( )) ( )時是不是頭都大了?那它究竟表示的是什麼意思呢?今天我們就拿它分析一下。

分析原則

1.要確定聲明中出現的操作符的優先級,

2.要確定在聲明中標識符與某個操作符結合起來的時候有什麼意義,並由內向外逐步來解讀.

注意點

當指針解引用操作符*與一個表示函數的標識符結合時,表示這個函數的返回值是一個指針。例如 *a() 表示a是一個返回值為指針的函數。

解析過程

pf():pf是一個無參函數

*pf():pf是一個無參函數,它的返回值是一個指針

(*pf())():pf是一個無參函數,它的返回值是一個無參函數的指針

(*(*pf())()) (): pf是一個無參函數,返回值是一個無參的函數的指針,函數返回值是一個無參函數的指針

int (*(*pf( )) ( )) ( ):pf是一個無參函數,返回值是一個無參的函數的指針。這個函數的返回值又是一個無參數且返回值為int的函數的指針

尾言

複雜冗長的聲明不要怕麻煩,由內到外一步一步分析,到最後你會發現不過如此,好了,今天的內容就到這裡吧,看完這個文章希望大家能夠有點收穫吧,也希望大家能幫忙三連下,如果閣下C語言比較差的,二進制都不知道是什麼的同學,不妨關注下小編的專欄視頻教程

通俗易懂,深入淺出,一個視頻只講一個知識點。視頻不深奧,不需要鑽研,在公交、在地鐵、在廁所都可以觀看,隨時隨地漲姿勢,人人都可以學習的視頻教程


分享到:


相關文章: