1. 程式人生 > >C語言(複雜型別的指標)

C語言(複雜型別的指標)

複雜型別的指標的難點在於:函式指標返回值為函式指標時,函式指標引數為函式指標時,以下均有相關例子。

例如:
char (*fp)(char *,int *);
定義一個名為fp的函式指標,其型別為:輸入兩個引數,int *型和char *型,返回引數型別為char

1. int *pf(float (*a)(int));
2. int (*pf(char *))[5];
3. char *(*p[2])(char *,char *);
4. int (*(*pf)(char *))[3];
5. char *(*a[2])(char(*)(int*),char *);
6. int(*(*pf[3])(char*))(char *);
7. char *(*(*(*(f[2])(char *))[2])(char *,char *);

 

//解釋

 

1 pf是個函式,它的返回值是個int*,它的引數是一個函式指標,函式指標指向的函式返回值為float型,引數為int型;對比一下  int(*pf)(float(*a)(int)),第一個pf是函式,第二個是函式指標,要區分開啊!

2 pf是個函式,它的引數是char*,它的返回值是個陣列指標,陣列指標指向一個長度為5的整型陣列;2和4是可以對比理解的,以區分函式和函式指標!

3 p是個陣列,陣列中每個元素都是一個函式指標,函式指標指向的函式返回值為char*,引數為char*,char*;

4 pf是個函式指標,函式指標指向的函式引數是char*,它的返回值是個陣列指標,陣列指標指向一個長度為3的整型陣列;

先來4個~~
~~~~~~繼續~~~~~
char *(*a[2])(char(*)(int*),char *);
a是一個數組,陣列由兩個元素構成,每個元素都是一個函式指標,函式指標指向的函式返回值為char*,指向的函式的引數有兩個,第一個是個函式指標,函式指標指向的函式返回值為char,引數為int*,第二個引數是char*;

int(*(*pf[3])(char*))(char *);
pf是個陣列,陣列由三個元素構成,每個元素是一個函式指標,函式指標的引數是char*,返回值是一個函式指標,函式指標的引數是char*,返回值是int;

 

char *(*(*(*f[2])(char *))[2])(char *,char *);
 
f是一個由2個元素構成的陣列,陣列的每個元素都是一個函式指標,函式指標指向的函式的引數是char*,返回值是一個指向含有2個元素的指標陣列的指標,指標陣列的每個元素都是函式指標,函式指標指向的函式的引數是char*,char*,返回值是char*;

轉載:https://zhidao.baidu.com/question/568261780.html