为什么有些编程语言会禁止返回子程序?然而语言C 不是吗?
此外,C如何实现返回函数的函数?
答案 0 :(得分:2)
我认为你的意思是功能指针? c可以做到这一点的原因是当然c有指针,你可以自己声明它们,例如java只有一些隐藏的指针
编辑我在互联网上找到了一个例子
#include <stdlib.h>
#include <stdio.h>
struct container
{
struct container (* call)(int);
};
struct container look_I_return_myself(int p)
{
struct container result;
printf("Here's some integer someone gave me, not sure what to do with it: %d.\n", p);
result.call = look_I_return_myself;
return result;
}
int main(void)
{
look_I_return_myself(3).call(4).call(5);
return EXIT_SUCCESS;
}
答案 1 :(得分:2)
C函数无法返回其他函数;他们只能返回指向其他功能的指针。它们是有区别的。
C设计背后的一个指导原则是让实施变得容易。这是C编译器可以在如此多种平台上找到的主要原因。这也是C提供如此少的抽象的主要原因。
显然,可能设计处理函数类型的语言,如任何其他数据类型(Haskell,Lisp,Java,C#等)。 C的设计者选择不这样做,因为他们试图解决的问题(用高级语言实现操作系统)并没有真正要求那种复杂程度,特别是考虑到他们正在工作的资源的局限性在那个时候。请记住,C是20世纪70年代早期的产物。