ZT 复杂的函数指针例子分析 2008

 复杂的函数指针例子分析 2008-01-26 11:38:22

分类:

一个最简单的函数指针定义如下:

Void (*funcPtr) (); //funcptr是一个函数指针,它指向的函数没有参数,返回值为void

非常复杂的函数指针定义:

1.            Void * (* ( * fp1)(int))[10];

解析:Void * X[10];è这是一个有10void*类型的元素的数组。

         X=* ( * fp1)(int),从而可以看出(*fp1(int)它是一个指针,指向一个数组。这个数组有10void指针类型的元素。

       Fp1是一个函数指针,它的参数是一个int型的参数。返回值为一个指向含有10void*元素的数组的指针。

2.            Void * ( * fp1)(int)[10]

解析:void*X[10];èX是一个有着10void*类型的数组

      X=( * fp1)(int)

      Fp1是一个函数指针,它有一个整型参数,其返回值是一个有着10void*类型的元素的数组。

若是这个形式Void * ( * fp1)(int)[10],则其返回值为一个指向含有10void类型的数组的指针。

3.            Void ( * fp1)(int)[10]

解析:void X[10]èX是一个有着10void类型的数组

     X=( * fp1)(int)

        Fp1是一个函数指针,它有一个整型参数,其返回值是一个有着10void类型的元素的数组

若是这个形式,Void ( * fp1)(int)[10],则其返回值为一个有10void类型的数组。

4.            Float (*(*fp2)(int,int,float))(int);

解析:Float X(int)èX是一个函数,有一个整型参数,返回值是一个浮点数。

X=*(*fp2)(int,int,float)

Fp2是一个函数指针,它有三个参数,前两个是整型,最后一个是浮点型。其返回值是一个指针,是一个指向函数的指针(函数指针)。这个函数指针所指向的函数的原型是只有一个整型参数,返回值是一个浮点数。

5.            Typedef double (*(*(*fp3)())[10])();

解析:fp3是一个函数指针;它不带参数;返回值是一个指针。

  X=(*(*fp3)())

Typedef double (*X[10])()

X是一个数组,他有10个元素,它的元素都是函数指针,这个函数指针所指向的函数原型是一个没有参数,返回值为double类型的函数。

综合起来就是:fp3是一个新定义的数据类型,它是一个函数指针,这个函数指针所指向的函数原型是不带参数,返回值是一个指向数组的指针。这个数组有10个元素,其元素类型是一个函数指针,这个函数指针所指向的函数原型是一个没有参数,返回值为double类型的函数。

6.  Int (*(*fp4())[10])();
解析:fp4是一个函数,他没有参数,返回值是一个指针;

      X= (*fp4())

Int (*X[10])();

X是一个数组,其有10个元素,每个元素都是一个函数指针,这个函数指针所代表的函数原型是一个没有参数,返回值是整型的函数。

综合起来就是:fp4是一个函数,他没有参数,返回值时一个指向数据的指针,这个数组有10个元素,每个元素都是一个函数指针,这个函数指针所代表的函数圆型是一个没有参数,返回值是整型的函数。

原文地址:https://www.cnblogs.com/jeanschen/p/3538710.html