标签:blog pre 闭包 code class closure logs 覆盖 pytho
#include <stdio.h> typedef int (*fun)(); fun closure(int i) { int squ() { return i*i; } return squ; } int main() { fun f = closure(2); printf("closure %d\n", f()); return 0; }
C中函数的嵌套定义可以实现类似闭包的效果,只是如果函数是定义在一个循环中时,如:
for (; i>arg-2; i--) { int squ() { return i*i; } arr[arg-i]=squ; }
在最后使用arr函数数组时始终是指向最后定义的一个squ函数。查看2次循环时,发现squ始终指向同一个地址,所以此处认为C在处理时会将前面定义的squ函数覆盖。
这个现象和Python中的返回函数中,引用了可变化变量的现象不同,Python中在循环中定义的函数是指向不同的地址的。
标签:blog pre 闭包 code class closure logs 覆盖 pytho
原文地址:http://www.cnblogs.com/m2492565210/p/7111827.html