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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值