黑马程序员技术交流社区
标题:
blocks函数等号前后两个参数有什么区别(这不是水贴)
[打印本页]
作者:
3677065
时间:
2014-8-25 14:17
标题:
blocks函数等号前后两个参数有什么区别(这不是水贴)
int (^myBlock) (int) = ^(int num){
2 return num * num;
3 }
以这个为例,我看不到等号前后两个参数有什么区别,为什么要这样写呢?
(这不是水贴)
作者:
庄得超
时间:
2014-8-25 15:26
首先,等号左边是函数的声明,等号右边是函数的实现。
(^myBlock) 函数指针的名称,其前面的int 表示函数的返回值类型,后面的(int)表示该函数有一个参数,且参数类型是int。等价于下面这段代码:
typedef int (^func)(int) myFunction;
myFunction myBlock = ^(int num){
return num * num;}
作者:
xiniuniu
时间:
2014-8-25 15:29
等号左边的括号只是说明这个block变量的类型。以你的例子为例,说明myBlock变量所指向的是一个返回值为int,参数也为int的代码块。而等号右边则是代码块中真正要用到的实参参数列表。所以参数类型后边必须指定一个名字
作者:
SailY
时间:
2014-8-31 18:53
这里有三个int,
1、
先说当中一个int,这个int意思是myblock需要个参数,这个参数是int型,告诉内存,我需要一个int大小的空间,相当于声明,声明可以不要参数,只要类型。
2、然后是右边的int,这个地方相当于定义,用num接收传递过来的参数。
3、左边的int,由于num是int型,num*num也是int型,返回的就是int型,假如说返回的int值需要赋值给P,P肯定就是int型。
因为用num接收的那个值就是int型,所以右边的int就是int型,然后又要声明,所以当中的也是int,然后返回值也是int,所以前面的类型也是int
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2