美文网首页
第二章 2.2.2 Block类型变量

第二章 2.2.2 Block类型变量

作者: MrSYLong | 来源:发表于2018-07-31 22:58 被阅读12次

    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);
    

    相关文章

      网友评论

          本文标题:第二章 2.2.2 Block类型变量

          本文链接:https://www.haomeiwen.com/subject/equkvftx.html