* * (*next) ();
貫徹兩點:
(*fun)(); ==(*fun)();
,而是的
C語言聲明的優先級規則
,然後依次讀取;
關鍵字的後面緊跟類型說明符(如int,long等),那麼它作用於類型說明符。在其他情況下,它作用於關鍵字左邊緊鄰的指針星號。
。
* * (*next) ();
”的策略。
剝?從語句的最左邊的標志符開始剝(上例為從next開始)。
剝?依照C語言的優先級規則一層層剝。
*(* c[]) ( **p);
c[10]) (int **p); 最左邊的標志符是c,表示"c是一個什麼東東";
) (int **p); 和[10]結合,表示"c是一個長度為10的數組";
) (int **p); 和*結合,表示"這個數組存放著指針";
; 和(int **p)結合,表示"這個指針指向一個函數,函數的參數是二維指針";
; 和 * 結合,表示"這個函數返回一個指針";
; 這個指針指向一個字符;
。如,所以像function()()和function()[]是非法的,不能出現。,像int (* function[])()是合法的,function[]()則是非法的。
參考文獻