//函数调用
sayHi();
//函数指针
void (*p_sayHi)() = NULL; //定义了一个数据类型为 void (*)()变量名为p_sayHi,初值为NULL的一个指针变量
//函数名 代表函数地址
p_sayHi = sayHi; //将函数的地址赋值给 p_sayHi,那么p_sayHi就指向了函数 sayHi,就可以当做函数名来使用
//使用函数指针调用函数
p_sayHi();
//函数调用
int sum = sumValue(10, 20);
NSLog(@"%d",sum);
//函数指针
int (*p_sum)(int , int ) = sumValue;
NSLog(@"%d",p_sum(20,1));
//函数指针int maxValue(int a,int b);
int (*p_max)(int ,int ) = maxValue; //定义了一个数据类型为 int (*)(int ,int) 变量名为p_max 初值为maxValue的指针变量, p_max就可以当做函数名使用
int result = p_max(10,2);
NSLog(@"%d",result);
//匿名函数 : 没有名字的函数
//block 语法块
//block 变量: 存放block语法块
//定义了一个数据类型为void (^)() 变量名为sayBlock,初值为^ void (){NSLog(@"没有名字的函数");}
//block语法块 其实就是一个匿名函数,但是他和其他函数不一样 可以嵌套定义 , 如果想使用block语法块就需要用对应数据类型的block变量去接收 使用变量进行调用
void (^sayBlock)() = ^ void(){
NSLog(@"没有名字的函数");
};
//使用block变量
sayBlock();
//求两个数之和
int (^sumBlock)(int ,int) = ^ int (int a,int b){
return a + b;
};
//使用
sum = sumBlock(1,1);
NSLog(@"%d",sum);
//写一个 返回值为整型 参数为OC字符串(仅一个参数) 的block,实现将字符串转换为整型的功能
//block回调
int (^ changeBlock)(NSString *) = ^ int (NSString *str)
{
return [str intValue];
};
int result1 = changeBlock(@"3432");
NSLog(@"%d",result1);
block 和 变量
局部变量
__block 修饰局部变量,告诉block在内部将变量识别为可变的量
__block int a = 10;
void (^testBlock)() = ^ void (){
a ++; //在block内部 将局部变量识别为不可变的量
b ++; //在block内部 将全局变量识别为可变的量
NSLog(@"%d",a);
};
TESTBLOCK sayBlock = ^ void (){
NSLog(@"可以么");
};
浙公网安备 33010602011771号