1. 程式人生 > >解析c語言中複雜的指標定義

解析c語言中複雜的指標定義

今天在網上看到一個很有趣的定義,對於高手來說自然不成問題,但對於很多新手這個就有一點難懂了,已經有很多高手解釋過了,那我也試著來解釋一下。

void (*(*f[])())()

先從最裡面的括號開始看,首先f先與[]結合,是一個數組未定義長度的陣列,則是代表了陣列記憶體放的是指標,那麼 *f[]就是一個存放陣列的指標。那麼這個陣列內的指標存放的是什麼指標呢,在往外看 ()很像函式指標, 就是說f陣列內的指標就是函式指標,那麼這個函式指標指向什麼呢,再往外看, * ()( )就是一個函式,問題就迎刃而解了,函式指標指向的是一個返回值為 指標的函式,那麼這個指標又指向什麼呢,void( * )(),也是一個函式指標,那麼這個問題就解決了。
於是f就是一個數組存放了指向返回值為指向void的函式的指標的指標。這麼說可能還是有些晦澀,但只要遵循正確的運算順序,還是不難理解的。