第二章 2.2.2 Block类型变量

Block语法从记述方式上,除了没有名称以及带有“ ^ ”以外,其他都于C语言函数定义相同。 在定义C语言函数时,可以将所定义的函数的地址赋值给函数指针类型变量中。

int func (int count)
{
    return count + 1;
}

int (*funcptr) (int) = &func;

同样地,在Block语法下,可将Block语法赋值给声明为Block类型的变量中。
代码中使用Block语法就相当于生成了可赋值给Block类型变量的值。

有关Blocks的文档中,“Block”既指代码中的Block语法,也指由Block语法所生成的值。

// 声明Block类型变量 示例:
int (^blk) (int);

Block类型变量与一般C语言变量完全相同,用途:
自动变量
函数参数
静态变量
静态全局变量
全局变量

// Block语法生成的值赋值给Block类型变量
int (^blk) (int) = ^int (int count) {
    return count + 1;
};

Block类型变量可以给Block类型变量赋值,可以作为函数参数,也可以作为函数返回值。

// 通过typedef 声明Block类型变量
typedef int (^blk) (int);

调用Block类型变量与调用函数指针类型变量一样

// 调用函数指针类型变量
int ruesult = (*funcptr)(10);

// 调用Block类型变量
int ruesult = blk(10);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容