static和Extern

static的作用:

  • 修饰局部变量:
  • 只会初始化一次;
  • 而且只有一份内存;
  • 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(直到程序结束,这个局部变量才会销毁)


    static和Extern_第1张图片
    Snip20150823_17.png
  • 修饰全局变量:
  • 用static修饰全局变量,那么作用域仅限当前文件访问.

Extern : 可以访问全局的变量

  • 项目中添加一个Person类在.m文件中声明一个全局变量并赋值20;


    static和Extern_第2张图片
    Snip20150823_19.png
  • 此时我想在viewController中访问这个属性.但是无法访问


    static和Extern_第3张图片
    Snip20150823_20.png
  • 那么此时想访问在Person中的age变量的时候 用extern引用一下就可以了


    static和Extern_第4张图片
    Snip20150823_21.png
  • 也就是说:加一个extern,要引用一个变量age,他会现在viewController中找,如果没有在去Person中找.

  • 默认情况下,C语言的全局变量,在任何地方都可以访问.
  • 只要加上extern就可以访问任何地方的全局变量.
  • 由于用extern访问不会定义变量,只是引用,所以是不会分配内存的,
  • 由于谁都可以更改全局变量,所以是不安全的

你可能感兴趣的:(static和Extern)