//
// 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;
} |
|