十八:static和extern的基本用法

一、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引用的时候,优先找本文件夹,如果找不到再去其它文件夹。

原文地址:https://www.cnblogs.com/hissia/p/5659119.html