<span style="font-size:24px;">#import <Foundation/Foundation.h>
//在其他文件定义的全局变量如果想在本文件中使用,则需要在本文件的main函数外部加上关键字extern + (int d),这样就可以使用其他文件中定义的全局变量;
//在两个不同的.m文件中同时定义了同一个名称的变量,如果想在各自的文件中使用,互不影响,那么只要把他们在各自的文件中定义成一个静态全局变量就可以了,不然,两个文件(.m)同时编译,会重复,从而出错;
int d = 10;//全局变量
int main(int argc, const char * argv[])
{
@autoreleasepool {
//int (^)(int x, int y) block变量的类型
//block-- block变量的名字
/* ^(int x, int y)
{
return x + y;
}; --- block 变量的初值,block用来存储函数,所以给block变量赋值时,赋的是整个函数的实现
*/
int (^block)(int x, int y) = ^(int x, int y)
{
return x + y;
};
//当把函数的实现赋给block变量之后,block变量就可以当作函数名来使用
//求和
int sum = block(5, 10);
printf("sum = %d\n", sum);
//当在block内部使用block外部定义的局部变量时,如果变量没有被__block(两个下划线)修饰,则在block内部是readonly的,不能对他进行修改,如果想修改,变量前必须要加__block
//__block的作用告诉编译器,编译时,在block内部不要把外部变量当作常量来使用,还是当作变量使用
//如果在block中访问全局变量,就不需要__block的修饰
//__block int c = 12;
int (^block1)(int x, int y) = ^(int x, int y)
{
d = 12;
return x * d;
};
//最大值
int maxValue = block1(12,16);
printf("maxValue = %d\n", maxValue);
int (^block2)(int x, int y) = ^(int x, int y)
{
return x < y ? x : y;
};
//求最小值
int minValue = block2(12,16);
printf("minValue = %d\n", minValue);
//类型重定义
typedef void (^Block)();
//打印
Block block4 = ^()
{
printf("vjmhvm");
};
block4();
}
return 0;
</span>
block的用法, 全局变量
最新推荐文章于 2022-06-25 15:50:48 发布