A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© herobin 中级黑马   /  2016-1-11 13:27  /  840 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.m
//  block的typedef
//
//  Created by herobin on 16/1/5.
//  Copyright © 2016年 herobin. All rights reserved.
/*
函数指针:指向函数的指针   int (*p) (int a,int b);
指针函数:返回址是指针类型的函数   int *p(int a,int b);

int max(int x,int y){
    return x>y?x:y;
}

使用函数名去调用函数,直接访问        int m = max(1,2);
函数名,存放的是函数的首地址
指针变量去间接访问   int (*)(int x,int y);
                p 可以指向返回值是int,并且有两个int类型参数的函数
                p = max;
                int m =p(1,2);  //间接访问


typedef int(*p)(int x,int y);
p是一个指针变量? 还是一个类型?  有空查查资料
                返回值是int 有两个整形参数的函数,起了别名,别名是p

                p pmax;     //定义变量
                pmax = max;
                NSLog(@"pmax = %d",pmax(1,2));


*/

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
   
    @autoreleasepool {
        
        //void (^myblock)();
        //myblock 是无参无返的block类型的变量
        
        
        //myblock是一个类型
        //1 给没有返回值,没有参数的代码块,起一个别名 myblock
        typedef void (^myblock)();
        
        //定义一个返回值是void 没有参数的block变量,名称为b1
        myblock b1;     //b1是一个变量,myblock是一个类型
        
        b1 = ^(){
            NSLog(@"test b1");
        };
        //执行b1
        b1();
        
        
        //2 给有参数的block起别名
        typedef void(^bloceType1)(int ,int);
        
        // 类型     变量
        bloceType1  b2 = ^(int x ,int y){
         
            NSLog(@"x+y=%d",x+y);
        };
        
        b2(20,10);
        
        
        
        
        //3 给有参数,有返回值的block起别名
        typedef int(^bloceType2)(int);
        
        bloceType2 b3 = ^(int a){
         
            return a;
        };
        
        int a = b3(22);
        NSLog(@"a=%d",a);
        
   
    }
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马