加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何声明指向返回函数指针的函数的指针

发布时间:2020-12-16 10:36:29 所属栏目:百科 来源:网络整理
导读:我有下面的代码运行正常并给出预期的结果. 我还有一个额外的查询,我如何在我的main函数中声明一个包含函数A(funcA)地址的指针? #includestdio.h#includestdlib.hint funcB (void){ printf("n Now you are in function B n "); printf ("n this function
我有下面的代码运行正常并给出预期的结果.
我还有一个额外的查询,我如何在我的main函数中声明一个包含函数A(funcA)地址的指针?

#include<stdio.h>
#include<stdlib.h>


int funcB (void)
{
 printf("n Now you are in function B n ");

 printf ("n this function is for returning code value no matter whatn");

 return -10;
}

int (*funcA(int x,int y)) (void)
{
 printf( " I am in function A n ");
   static int sum;
   sum=x+y;
 printf ( "n Sum is %d ",sum);
 return &funcB;
 }

int main ()

{

int (*fpb)(void);

int x;

fpb=funcA(10,15);

x=(*fpb)();   // Calling function B through fpb pointer

printf("n Value stored in x for code is %d n",x);

}

结果:

I am in function A

Sum is 25
Now you are in function B

this function is for returning code value no matter what

Value stored in x for code is -10

解决方法

语法足够grokky,最好使用typedef.我不假设C 11.()s四处走动* NameOfType:

typedef int (*funcBTypePointer) (void);

int main ()
{
    funcBTypePointer fpb;

    ...
}

我看到funcA是返回funcB的地址.以下是如何做到这一点:

funcBTypePointer funcA(int x,int y)
{
 printf( " I am in function A n ");
 static int sum;
 sum=x+y;
 printf ( "n Sum is %d ",sum);
 return funcB;
}

如果你引用一个没有参数列表的函数,你会得到一个指向函数的指针; &安培;不需要.

有关函数指针的更多信息,请参阅本教程:http://www.learncpp.com/cpp-tutorial/78-function-pointers/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读