c语言中block做函数参数,c语言中的block
//block塊(數據類型) 封裝的一段具有特定功能的代碼段
//函數有函數名,block沒有名字,也可以叫做匿名函數;函數不能做參數傳遞,block可以作為參數傳遞;
//形式:
/* 返回值類型,(^ block變量名)(參數列表)=^(參數列表){? ? 代碼段? ? return(如果) } */
//調用
//block變量名
//return(如果返回值類型不是void,就將返回值return出去)
//diyBlock是給int(^)(int a,int b)這種block類型定義的一個新名字,以后我們使用divBlock就表示int(^)(int a,int b)這個類型
typedefint(^divBlock)(inta,intb) ;
#import
intmain(intargc,constchar* argv[]) {
@autoreleasepool{
}
}
//定義一個block#importvoid demo0();
void demo4();
//void demo1();
int main(int argc, const char * argv[]) {
@autoreleasepool {
//? ? ? 無參無返的block
//? ? ? ? 調用一個block
//demo0();
//demo1();
demo4();
}
return 0;
}
//wucanwufan
//? ? ? 寫一個block ,用for循環,打印三遍Hello Word
void demo0(){
void (^hi)() = ^(){
for(int i = 0; i <= 3; i++){
NSLog(@"Hello Word!\n");
}
};
hi();
}
//這是一個有參無返的block;
/*
void (^block名)(參數列表)= ^(參數列表)
*/
//? ? ? ? 定義一個block,用for循環打印三次hello word,n,用鍵盤該輸入
void demo1(){
void (^daying)(int n) = ^(int n){
for(int i = 0; i <= n; i++){
printf("Hello Word!\n");
}
};
int n;
printf("請輸入n\n");
scanf("%d",&n);
daying(n);
}
//無參有返的block
/*
返回值類型(^block名)() = ^(){}
*/
void demo3(){
//? ? ? 無參有返
int (^peopleCount)() = ^(){
return 28;
};
//? ? ? ? bolck調用
int count = peopleCount();
NSLog(@"count = %d",count);
//? ? ? ? 定義一個block返回字符串
char *(^string)() = ^(){
return "Hello";
};
//調用
char *str = string();
NSLog(@"str = %s",str);
}
//定義一個新的名字
typedef int(^diyBlock)(int a, int b);
void demo4(){
//? ? ? ? 寫4個block,來做四則運算,a、b是通過鍵盤輸入
diyBlock jian = ^(int num1, int num2){
if (num1 > num2) {
return num1 - num2;
}else{
return num2 - num1;
}
};
diyBlock add = ^(int a, int b){
return? a + b;
};
diyBlock cheng = ^(int a, int b){
return a * b;
};
diyBlock chu = ^(int a, int b){
if (b == 0) {
NSLog(@"除數不能為0");
return 0;
}else{
return a / b;
}
//? ? int (^add)(int a, int b) = ^(int a, int b){
//? ? ? ? return? a + b;
//? ? };
//
//? ? int (^cheng)(int a, int b) = ^(int a, int b){
//? ? ? ? return a * b;
//? ? };
//
//? ? int (^chu)(int a, int b) = ^(int a, int b){
//? ? ? ? if (b == 0) {
//? ? ? ? ? ? NSLog(@"除數不能為0");
//? ? ? ? ? ? return 0;
//? ? ? ? }else{
//? ? ? ? ? ? return a / b;
//? ? ? ? }
};
int a;
int b;
NSLog(@"請輸入兩個整數\n");
scanf("%d%d",&a,&b);
int num =? add(a,b);
NSLog(@"整數之和為:%d",num);
int num1 =? chu(a,b);
NSLog(@"整數相除為:%d",num1);
int num2 =? cheng(a,b);
NSLog(@"整數相乘為:%d",num2);
int num3 =? jian(a,b);
NSLog(@"整數相減為:%d",num3);
}
總結
以上是生活随笔為你收集整理的c语言中block做函数参数,c语言中的block的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (分治)取余运算
- 下一篇: (dijkstra算法+多权值)最短路径