我有下面的代码运行正常并给出预期的结果.
我还有一个额外的查询,我如何在我的main函数中声明一个包含函数A(funcA)地址的指针?
我还有一个额外的查询,我如何在我的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 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/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。