我有下面的代码运行正常并给出预期的结果.
我还有一个额外的查询,我如何在我的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/