zoukankan      html  css  js  c++  java
  • 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个元素,每个元素都是一个函数指针,这个函数指针所代表的函数圆型是一个没有参数,返回值是整型的函数。

  • 相关阅读:
    c语言函数定义、函数声明、函数调用以及extern跨文件的变量引用
    c语言局部变量 静态局部变量 全局变量与静态全局变量
    Source Insight建工程之Kernel
    day49
    管道实例取出最常用的10个指令
    day52
    Linux中vi的使用
    vi高级技巧
    vim配置
    typedef
  • 原文地址:https://www.cnblogs.com/jeanschen/p/3538710.html
Copyright © 2011-2022 走看看