OC中的变量位置

Posted by hdj on November 29, 2017

前言

const/static/extern/typedef/typeof/define的释义和用法

1、const(常量—readonly)

### 作用: const (去掉类型)修饰谁,谁不能改变。

  • 用于修饰 右边 的基本变量或指针变量;
  • 被修饰的变量只读,不能被修改(readonly);

2、static (静态的)

作用:修饰不同的变量作用不尽相同。

  1. 成员变量 - 不能修饰成员变量。

  2. 局部变量 - 可以修饰局部变量,存储到静态存储区。
    • 延长局部变量的生命周期,程序结束才会销毁。
    • 局部变量只会生成一份内存,只会初始化一次。
    • 并没有改变变量的作用域。
  3. 全局变量 - 只能在当前源文件中访问
    • 使全局变量的作用域仅限于当前文件内部,即当前文件内部才能访问该全局变量。
    • 避免重复定义全局变量。
  4. 函数 - 该函数只能在当前源文件中访问

(1)从存储空间来理解分为:程序区、静态存储区、动态存储区。 其中静态存储区为存储静态变量,变量从创建开始就一直存在,直到程序结束销毁;动态存储区,存储动态变量,如函数中创建的动态变量,随着函数结束就销毁了。

(2)对于一个数据的定义,需要指定两种属性:存储类型和数据类型。 static int a; (static为存储类型,int 为数据类型) auto char c; (auto为存储类型,char为数据类型)

(3)按照作用域来分:

static 作用域

3、extern

用extern修饰符修饰的变量或者函数,表示“此变量或者函数在其它文件已经定义,在这里只做引用处理”。