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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
        函数指针的回顾
    c的类型:基本类型,空类型,构造类型,指针类型,定义类型。
    typedef int a;给int起别名,别名为a
    typedef Arr[4]; Arr a1 定义一个长度为4的整形数组。
        
        函数指针:指向函数的指针。---->
                int max(int x,int y){
                return x>y?x:y;
                }

        指针函数:返回值是指针类型的函数。----->

*/

#import <Foundation/Foundation.h>
int max(int x,int y){
    return x>y?x:y;
}

void test2(){
    //        调用函数
    //        使用函数名调用函数,直接访问
    //        函数名,存放的是函数的额首地址
    int m = max(32,67);
    //        NSLog(@"m = %d",m);
   
    //        指针变量简直访问
    //        函数指针的定义:定一个函数指针变量,名称是p 如下,简便的做法:
    //                                       直接把原来的函数名拖过来,函数名用(*p)来代替。这样就
    //        p可以指向返回值是int,并且有两个int类型的参数的函数
    //        int (*p)(int x,int y);            //表示有两个参数的函数指针!括号内的东西后读,函数指针!
    //        p =max;    //这个函数指针指向max这个函数,
    //        m=p(43,12);
    //        NSLog(@"m  =  %d",m);
   
    //p是一个指针变量?还是一个类型?
    //        此时,返回值是int,有两个整形参数的函数,起来别名,别名是p
    typedef int (*p)(int x,int y);
    //        此时p 是一个类型了不能  p = max;
    p pmax;  //此时p是一个类型了(一个函数指针,指向max的这个指针)
    pmax = max; //让用p定义的这个指针指向max;
    NSLog(@"pmax = %d",pmax(32,67));
    //
   
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //myBlock是没有参数,没有返回值的block类型的变量
//        void (^myBlock)();
        
        typedef  void (^myBlock)();
        myBlock b1;
        b1 =^{
           
            NSLog(@"test b1");
        };
        
        b1();
        
        //给有参数的block起别名
        typedef void (^blockType1)(int x,int y);
        
        //使用别名定义block变量,并且初始化
        //blockType 是一个类型
        //bt是一个变量
        blockType1 bt = ^(int x,int y){
        
            NSLog(@"x+y = %d",x+y);
        };
        
        bt(12,67);
        
//        3,给有参数,有返回值的block起别名;
        typedef int (^blockType2) (int x,int y);
        //定义有参数,有返回值的block变量,名称是b2
        blockType2 b2 = ^(int x,int y){
        
            return x+y;
            
        };
        
        int a = b2(45,76);
        
        NSLog(@"a = %d",a);
        
    }
    return 0;
}

1 个回复

正序浏览
基本做的真好,清晰明了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马