如下內容都是從百度上找到的解說數組
1(*(void (*)())0)() 函數
第一步:void(*) (),能夠明白這是一個函數指針類型。這個函數沒有參數,沒有返回值。指針
第二步:(void(*) ())0,這是將0強制轉換爲函數指針類型,0是一個地址,也就是說一個函數存在首地址爲0的一段區域內。內存
第三步:(*(void(*) ())0),這是取0地址開始的一段內存裏面的內容,其內容就是保存在首地址爲0的一段區域內的函數。變量
第四步:(*(void(*) ())0)(),這是函數調用。百度
2,int *( * (*fpl ) ( int ) ) [10];float
第一步 *fpl 知道fpl是一個指針總結
第二步 *(*fpl)(int) 知道指針fpl指向一個形參爲int,返回值爲指針的函數(函數指針)參數
第三步 int *(*(*fpl)(int))[10] 知道該函數的指針指向一個數組,該數組有10個元素,而且每一個元素指向一個整數void
總結:fpl被聲明爲一個函數的指針,該函數返回值是一個指向指針數組的指針
3,int *(*(*arr [5])())();
第一步 *arr [5] 知道arr是指針數組,數組arr裏有5個指針,每一個元素裏存放着某某的地址
第二步*(*arr [5])() 知道函數指針數組,一個有5 個指針的數組,該指針指向一個形參爲空,返回值爲指針的函數
第三步int *(*(* arr [5])())()接上面,知道該函數返回一個指向函數指針的指針
總結:arr是一個數組,數組中存儲的是5個指針,設爲P0,P0指向無參數的函數F0,F0的返回值是指針P1,P1指向一個無參數的函數F1,F1的返回值爲int型指針
4,float (*(*b())[ ])();
b:函數,形參爲空,返回值爲數組指針,該指針指向一個函數指針數組,該數組裏的元素指向一個形參爲空,返回值爲float的函數。
5,void* (*c)(char, int(*)());
c:函數指針變量,該函數指針指向一個形參爲char 、函數指針,返回值爲void*,該函數指針的形參爲空,返回值爲int。
6,void** (*d)(int *,char **(*)(char *,char **));
d:函數指針變量,指向函數形參爲char,函數指針,返回值爲void **,該函數指針形參爲 char*,char**,返回值爲char**;
7,float(*(*e[10])(int *))[5];
e:函數指針數組,指向函數形參爲 int *,返回值爲數組指針,該數組元素指向float;