一、static的作用:
1、修饰局部变量:让局部变量只创建一次,局部变量在程序中只有一份内存!并不会改变变量的作用域
例如:
1 void test()
2 {
3 int a = 0;
4 a++;
5 NSLog(@"a = %d",a);
6 }
7
8 int main(int argc, const char * argv[]) {
9 @autoreleasepool {
10 for (int i=0; i<3; i++) {
11 test();
12 }
13 }
14 return 0;
15 }
打印结果为:
1 2016-07-08 20:47:02.315 static、copy和extern的基本使用[11489:914128] a = 1
2
3 2016-07-08 20:47:02.316 static、copy和extern的基本使用[11489:914128] a = 1
4
5 2016-07-08 20:47:02.316 static、copy和extern的基本使用[11489:914128] a = 1
如果把int a = 0改为static int a = 0则结果为:
1 2016-07-08 20:48:19.988 static、copy和extern的基本使用[11502:915143] a = 1
2 2016-07-08 20:48:19.988 static、copy和extern的基本使用[11502:915143] a = 2
3 2016-07-08 20:48:19.989 static、copy和extern的基本使用[11502:915143] a = 3
2、修饰全局变量。作用域减小到当前文件夹,其它文件无法访问和修改
二、extern的作用:
1、默认情况下所有文件的变量都可以访问,只需要在定义变量时添加一个extern(extern int age)(而且没有分配内存)引用一下就行,这个不管int age是定义在哪个文件中,都可以得到,而且此变量还可以被修改。
2、extern引用的时候,优先找本文件夹,如果找不到再去其它文件夹。