//函數調用函數
sayHi();指針
//函數指針字符串
void (*p_sayHi)() = NULL; //定義了一個數據類型爲 void (*)()變量名爲p_sayHi,初值爲NULL的一個指針變量test
//函數名 表明函數地址匿名函數
p_sayHi = sayHi; //將函數的地址賦值給 p_sayHi,那麼p_sayHi就指向了函數 sayHi,就能夠當作函數名來使用變量
//使用函數指針調用函數數據類型
p_sayHi();語法
//函數調用數據
int sum = sumValue(10, 20);block
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(@"能夠麼");
};