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

c – 如何声明指向返回函数指针的函数的指针,第1张

概述我有下面的代码运行正常并给出预期的结果. 我还有一个额外的查询,我如何在我的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 i 我有下面的代码运行正常并给出预期的结果.
我还有一个额外的查询,我如何在我的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 what\n"); 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 pointerprintf("\n Value stored in x for code is %d \n",x);}

结果:

I am in function ASum is 25Now you are in function Bthis function is for returning code value no matter whatValue 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/

总结

以上是内存溢出为你收集整理的c – 如何声明指向返回函数指针的函数的指针全部内容,希望文章能够帮你解决c – 如何声明指向返回函数指针的函数的指针所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1221433.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存