黑马程序员技术交流社区
标题:
block的typedef 需要的看以看一看
[打印本页]
作者:
一马当先
时间:
2016-3-19 21:45
标题:
block的typedef 需要的看以看一看
/*
函数指针: 指向函数的指针
指针函数: 返回值是指针类型的函数
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(34,438);
//指针变量间接访问
//函数指针的定义:
//定义了一个函数指针变量,名称是p
// p 可以指向返回值是int 并且有两个int类型的参数的函数
// int (*p)(int x,int y);
// p = max;
//
// m = p(34,438); //间接访问
// NSLog(@"m = %d",m);
//p是一个指针变量? 还是一个类型?
// 此时把 返回值是int 有两个整型参数的函数,起了别名,别名是p
typedef int (*p)(int x,int y);
//p = max;
p pmax;
pmax = max;
NSLog(@"pmax = %d",pmax(34,438));
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//myblock 是没有参数,没有返回值的block类型的变量
// void (^myblock)();
//1,给没有参数,没有返回值的block起别名
//myblock 是一个类型
//给没有返回值,没有参数的代码块,起一个别名 myblock
typedef void (^myblock)();
//定义一个返回值是void没有参数的block变量,名称为b1
myblock b1; //b1是一个变量,myblock是一个类型
//给block变量赋值
b1 = ^{
NSLog(@"test b1");
};
//执行block
b1();
//2,给有参数的block起别名
typedef void (^blockType1)(int x,int y);
//使用别名定义block变量,并且初始化
//blockType 是一个类型
//bt是一个变量
blockType1 bt = ^(int x,int y){
NSLog(@"x+y = %d",x+y);
};
bt(34,23);
//3,给有参数,有返回值的block起别名
typedef int(^blockType2) (int x,int y);
//定义有参数,有返回值的block变量,名称是b2
blockType2 b2 = ^(int x,int y){
return x+y;
};
int s = b2(23,10);
NSLog(@"s = %d",s);
}
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2