天天看点

Block和函数指针的区别

1. 函数指针仅仅是一个地址,不具备函数原型信息,没有类型限制,比如一个指向变量的指针同样可以指向一个函数,但是block作为函数对象,是有部分函数信息的,类型限制更明确。

2. block方式便于实现真正的“函数式”编程,让函数成为基本的运算元,往更远的方向说,真正的函数式语言可以去掉寄存器(请参考冯诺依曼机器基本架构),提高程序的执行效率,近段时间的语言都支持lambda语法,包括JS、C++、Python、Ruby等,可见各个编程语言为改进冯诺依曼架构做出的努力和准备

3. 提高程序的健壮性, 定义函数的代码会位于程序的代码段,如果函数内部出现内存溢出,就会直接导致crash,因为代码段是不可写的;block作为函数对象在运行时生成,位于栈内,即使出现内存溢出,一般也不会直接导致crash.

参考:http://blog.csdn.net/totogo2010 微博的评论.