int *f[ ] ; f 是一個arrary,它的元素類型是指向int的point
int (*f [ ])() ; f 是一個array,它的元素類型是function point,它所指向的函數的返回值是一個int
int *(*f [ ])() ; f 是一個array,它的元素類型是function point,它所指向的函數的返回值是一個int point
=========================================================================
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
sighandler_t是一個function point, 它所指向的函數帶一個int型參數, 返回值是void.
signal 是一個函數, 它帶兩個參數, 一個 int參數, 一個sigheadler_t類型的參數, 返回值也是sigheandler_t類型
把兩行合成一行,就是
void ( *signal (int signum, void (*handler) (int)) ) (int);
再分析複雜聲明時, 需要藉由typedef 來把複雜的聲明,分解成幾種基本形式
1.T *p; p是指向T類型的指針
2.T a[ ]; a 是由T類型的元素組成的數組, 但有一個例外, 如果a是函數的形參, 則相當於 T *a
3.T1 f(T2, T3...); f是一個函數, 參數類型是T2 T3等, 返回值的類型是T1