美文网首页
第二章 2.2.3 截获自动变量值

第二章 2.2.3 截获自动变量值

作者: MrSYLong | 来源:发表于2018-08-01 22:26 被阅读4次

    通过上面两节,Block语法与Block类型变量,可以理解“带有自动变量值的匿名函数”中“匿名函数”。而“带有自动变量值”在Blocks中表现为“截获自动变量值”。

    int val = 10;
    const char *fmt = "val = %d\n";
    
    void (^blk) (void) = ^void (void) {
        // Block语法表达式中使用之前声明的自动变量fmt、val
        printf(fmt, val);
    };
    
    val = 2;
    fmt = "these values were changed. val = %d\n";
    
    blk();
    
    输出:
    val = 10
    
    说明:
    Blocks中,Block表达式截获所使用的自动变量的值,即Block表达式保存自动变量的瞬间值。所以即使在执行Block语法后,修改Block表达式中使用的自动变量,也不会影响Block执行时自动变量的值。
    

    相关文章

      网友评论

          本文标题:第二章 2.2.3 截获自动变量值

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