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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |