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

猜你喜欢

转载自blog.csdn.net/Think88666/article/details/85693352