block的使用(二)

typedef int INT; // int定义别名INT数组

typedef int ARR[4]; ARR a1;//定义了一个长度为4的整形数组函数

//typedef  定义类型spa

// typedef 给基本数据类型 构造类型 枚举类型 函数指针 起别名.net

// 函数指针: 指向函数的指针指针


#import <Foundation/Foundation.h>orm


int sum(int a,int b){get

    return a+b;io

}import


int main(int argc, const char * argv[]) {变量

    @autoreleasepool {

        // 调用函数

        int s1 = sum(10, 119); // 函数名存储的是函数的首地址

        NSLog(@"%d",s1); // 129

        // 函数指针p,p指向的是sum函数的首地址

        int (*p)(int a, int b);

        p = sum; // p赋初始值

        int s2 = (*p)(10,119);

          NSLog(@"%d",s2); // 129

        

        typedef int (*p1)(int a, int b); //给返回值是int而且有2个参数的函数起别名,别名是p1p1是一种类型

        

        // 定义无参无返回值的block变量

        void (^block1)(); // block1是一个返回值是void没有参数的block变量

        block1 = ^{

            NSLog(@"hahah");

        };

        

        // 使用typedef

        typedef void(^block2)(); // 给返回值是void 没有参数的代码块起一个别名,别名是block2

//        block2 = ^{

//            NSLog(@"222");

//        };   会报错

        

        block2 bb; // bb是一个block变量

        bb = ^{

            NSLog(@"bb");

        };

        

        bb();

        

        // 给有参数没有返回值的block起别名

        typedef void(^blockType)(int); // blockType 是一个类型

        blockType b1;

        b1 = ^(int a) {

            NSLog(@"a = %d",a);

        };

        

        b1(10);

        

        // 给有参数有返回值的block起别名

        

        typedef int(^blockType2)(int ,int);

        blockType2 b2 = ^ (int x,int y) {

            return x + y;

        };

        

        int sum = b2(10,5);

        NSLog(@"%d",sum);

    }

    return 0;

}

相关文章
相关标签/搜索