我的教授向我们展示了这段代码:
timerX(int x){
int times(int y){
return x * y;
}
return times;
}
这在C中是如何工作的(使用GCC编译器)?他说,一旦函数消失,内部函数就会消失?我感谢任何提示或建议。
答案 0 :(得分:7)
它被称为nested function, a GNU extension。基本上
内部函数可以访问外部函数的局部变量(在其外观之前声明的那些)
内部函数只能通过函数poinyers从外部调用,但如果内部函数从其父函数访问对象,则不能在包含函数终止后调用
在您的示例中,从外部调用该函数指针可能是非法的。
如果您尝试通过其地址后调用嵌套函数 包含功能已退出,所有地狱都会破裂。
答案 1 :(得分:3)
我很确定它的工作方式和其他任何函数一样,只是它只对封闭函数可见。
换句话说,它只与功能的可见性或可访问性有关,而不是其他任何内容。