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;

}

相關文章
相關標籤/搜索