A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int (^myBlock) (int) = ^(int num){
2     return num * num;
3 }


以这个为例,我看不到等号前后两个参数有什么区别,为什么要这样写呢?

(这不是水贴)

3 个回复

正序浏览
这里有三个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
回复 使用道具 举报
等号左边的括号只是说明这个block变量的类型。以你的例子为例,说明myBlock变量所指向的是一个返回值为int,参数也为int的代码块。而等号右边则是代码块中真正要用到的实参参数列表。所以参数类型后边必须指定一个名字
回复 使用道具 举报
首先,等号左边是函数的声明,等号右边是函数的实现。
(^myBlock)  函数指针的名称,其前面的int 表示函数的返回值类型,后面的(int)表示该函数有一个参数,且参数类型是int。等价于下面这段代码:
typedef int (^func)(int) myFunction;
myFunction myBlock = ^(int num){
        return num * num;}
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马