返回值是函数指针的函数示例

来源:互联网 发布:java 拖动滑块验证码 编辑:程序博客网 时间:2024/06/06 12:21

原文链接:http://www.cnblogs.com/super119/archive/2011/03/26/1996145.html

 

来自interview的一个考题,所以写了一个测试程序来demonstrate一下。

func是一个函数指针,该函数返回值是int,没有输入参数;然后主程序中声明了一个函数指针myFuncPointer,该函数指针代表的函 数输入参数是一个int,返回值也是一个函数指针,类型就是func类型的。所以我们可以把func2这个函数赋给myFuncPointer这个指针。 interview的题目要的就是myFuncPointer这个指针的声明。

    #include <stdio.h>

    typedef 
int (*func)();

    
int func3()
    {
        printf(
"In function 3....../n");
        
return 0;
    }

    func func2(
int a)
    {
        printf(
"input parameter is: %d/n", a);
        
return func3;
    }


    
int main()
    {
        func (
*myFuncPointer)(int= func2;
        func returnvalue 
= myFuncPointer(1111);
        
int func3_return = returnvalue();
        printf(
"Func3 return value is: %d/n", func3_return);
        
return 0;
    }
原文链接:http://blog.csdn.net/coder_jack/archive/2010/05/27/5629436.aspx
这一个没怎么看懂
一个函数的返回值可以是一个指向函数的指针,下面是一个例子
#include <stdio.h>

int get_big(int i,int j)
{
        return i>=j?i:j;
}

int (*f(int a))(int,int)    //f(int a)是一个函数,这个函数的返回值是一个
{                             //指向函数(该函数的返回值值为int,有两个int型的形参)的指针
        printf("a=%d/n",a);
        return get_big;
}

int main(void)
{
        int max;
        int (*p)(int,int);     //定义了一个指向函数(该函数的返回值为int,有两个均为int的形参)的指针
        p=f(100);
        max=p(5,8);
        printf("max=%d/n",max);
        return 1;
}