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

原文链接: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 ;
    }
这一个没怎么看懂
一个函数的返回值可以是一个指向函数的指针,下面是一个例子
#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;
}
### C/C++ 中函数指针返回值可以是指针类型 在 C/C++ 编程语言中,函数指针不仅可以指向具有基本类型返回值函数,还可以指向那些返回指针类型函数。这意味着可以通过函数指针对返回复杂数据结构(如其他指针、数组或对象)的函数进行间接调用。 #### 定义与声明 为了实现这一点,首先需要正确地定义和声明这样的函数及其对应的函数指针。下面是一个具体的实例来展示如何做到这点: ```cpp // 声明一个返回整型指针并接受两个整形参数的函数原型 int* addAndReturnPointer(int a, int b); // 定义上述函数的具体行为 int* addAndReturnPointer(int a, int b){ static int result; result = a + b; return &result; // 返回静态变量的结果地址 } // 定义一个能够存储指向这种特定签名函数指针 int *(*funcPtr)(int, int); ``` 这里 `addAndReturnPointer` 是一个实际存在的函数,它接收两个整数作为输入,并通过计算它们的和后将其存入一个静态局部变量中,最后返回该静态变量的地址。而 `funcPtr` 则是用来保存这类函数地址的一个函数指针[^1]。 #### 使用示例 接下来是如何使用这个函数指针的例子: ```cpp #include <iostream> using namespace std; int main(){ funcPtr = addAndReturnPointer; // 将具体函数绑定到函数指针 cout << "Result via function pointer: " << *funcPtr(3, 4) << endl; return 0; } ``` 这段代码展示了怎样利用之前定义好的函数指针去执行相应的逻辑运算,并打印出结果。注意这里的解引用操作 (`*`) ,这是因为我们想要获取由指针所指向的实际数值而不是其内存位置[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值