[英]C - function returning pointer to function
函数返回指向另一个函数的指针的正确C语法是什么(它又可能返回指向某个函数的指针,等等)? 我知道我们可以将一个函数定义为另一个函数内部的局部变量(但是我们需要知道地址,否则它是无用的):
int*(*a)(int) = (void*)0;
这是局部变量a
,它表示一个具有int
作为参数的函数,并返回指向int
指针,而该函数的地址为0
。 我怎样才能有一个函数,而不是指向int
的指针,而是返回一个需要将char
作为参数的函数的指针,并返回一个指向int
的指针? 这是我尝试过的:
int*(*)(char)(*a)(int) = (void*)0;
但是,这是一个语法错误。 有没有办法做到这一点,或者也许唯一的办法就是返回void*
然后再将其强制转换为函数?
我不仅在寻找可行的解决方案。 我知道可以使用typedef
或仅通过返回通用指针然后将其转换为另一个函数来完成。 但是,我正在为C写一个代码突出显示工具,并且我想介绍一下ISO C定义的所有情况,所以我想知道ISO C是否允许双返回函数,如果可以,正确的语法是什么,如果不能,可以吗?可以在文档中找到?
您可以使用typedefs简化此过程(并确保一周后可以真正理解代码):
typedef int*(*FuncA)(int);
typedef FuncA(*FuncB)();
FuncB a = (void*)0;
显然使用的描述性名称要比我在此使用的描述性名称更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.