这个包含函数的C函数有什么问题?

Cof*_*fee 5 c recursion

我的教授告诉我们这段代码:

timerX(int x){

     int times(int y){
          return x * y;
     }
     return times;

}
Run Code Online (Sandbox Code Playgroud)

这在C中是如何工作的(使用GCC编译器)?他说,一旦函数消失,内部函数就会消失?我感谢任何提示或建议.

cni*_*tar 7

它被称为嵌套函数,GNU扩展.基本上

  • 内部函数可以访问外部函数的局部变量(在其外观之前声明的那些)

  • 内部函数只能通过函数poinyers从外部调用,但是如果内部函数从其父函数访问对象,则不能在包含函数终止后调用

在您的示例中,从外部调用该函数指针可能是非法的.

如果你试图在包含函数退出后通过其地址调用嵌套函数,那么所有的地狱都会破裂.