//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相关推荐

  1. C++二维数组做函数参数

    C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...}//以下两种可以忽略行数 f ...

  2. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  3. C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态

    1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针 ...

  4. Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...

  5. C语言多维数组做函数参数技术推演

    多维数组做函数参数技术 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) 二维数组参数同样存在退化的问题 等价关系 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) int ...

  6. C语言多维数组做函数参数退化原因大剖析

    多维数组做函数参数退化原因 多维数组做函数参数退化原因大剖析 多维数组做函数参数退化原因大剖析 //证明一下多维数组的线性存储 //线性打印 void printfArray411(int *arra ...

  7. C语言字符串做函数参数

    C语言字符串做函数参数 深入理解指针 一维字符串内存模型:两种 典型错误知多少 深入理解指针 注意 指针和数组的巨大区别 char *p = "abcdefg"; Char *bu ...

  8. C语言中数组做函数参数的问题

    数组做函数参数,会退化成为一个指针变量.因此在进行数组参数传递的同时,需要传递一个数组长度的参数变量. 数组长度可以通过sizeof(arr)/siezof(arr[0])来得到.关于这个sizeof ...

  9. c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用

    2. 引用 学习目的:取代C中的指针. 目录 2. 引用 2.1 引用的基本使用方法 2.2 引用注意事项 2.3 引用做函数参数 2.4引用做函数返回值 2.5 引用的本质 2.6 常量引用 相关教 ...

最新文章

  1. ubuntu安装deepin terminal 终端
  2. 关于props的注意事项!
  3. Linux搭建lamp(Apache+PHP+Mysql环境)centos7.2版详细教程
  4. eBPF BCC 实现UNIX socket抓包
  5. mysql binlog-row-image=minimal_十一:参数binlog_row_image(笔记)
  6. 软件开发再编写过程中,要尽可能地让开发者再后来可以很容易地找到软件的编写逻辑和思路结构。这才是我们需要追求的。...
  7. Idea下的springboot mysql8.0等报错解决随笔
  8. Python读取 csv文件中文乱码处理
  9. 暑假作业点评:运动会管理系统设计说明书
  10. 计算机免费取名,电脑免费取名
  11. app接口开发整理(1)
  12. vue前端实现批量导出
  13. 微信小程序 提示 provisional headers are shown
  14. 计算机前沿技术科论文,计算机前沿技术论文
  15. Linux服务器查看Ip地址
  16. 干货推荐 | 一个好的产品设计原则都有这些
  17. mysql 的几种缓存,数据库缓存几种方式 -解道Jdon
  18. 为何美团、抖音都潜入社群团购?毫无疑问社群团购是大趋势。
  19. 常用图像增强算法实现——直方图均衡
  20. SCI与EI检索是什么意思,包括哪些专业?

热门文章

  1. vm虚拟远程部署windows驱动
  2. 小米用户画像_腾讯企鹅智库发布手机品牌用户画像:华为一二线城市用户少于小米...
  3. 画圆怎么编程python_简单实现python画圆功能
  4. java变量用来干嘛_Java
  5. 插入数据的时候出现错误:Error during job, obtaining debugging information…
  6. python ftp timeout_python - FTP文件传输期间Python数据通道超时 - 堆栈内存溢出
  7. collectors 求和_Collectors扩展接口 实现BigDecimal的相加
  8. r导出html怎么保存,做植物谱系图,用Phylomatic软件将网页中的输出结果拷贝到文本文件中, 并另存为phylo...
  9. TIM怎么设置禁止窗口抖动 TIM防抖设置技巧
  10. 谷歌浏览器下载的文件保存在哪里?