Object-C中成员变量、全局变量和局部变量的区别

一、成员变量

  • 写在类声明的大括号中的变量,称之为成员变量(属性,实例变量)
  • 成员变量只能通过对象来访问
  • 成员变量不能离开类,离开类之后就不是成员变量;成员变量不能在定义的同时进行初始化
  • 存储:堆(当前对象对应的堆的存储空间中)
  • 存储在堆中的数据,不会被自动释放,只能程序员手动释放
  @interface Person : NSObject
  {
      int age;
  }
  @end

  @implementation Person
  
  @end

二、全局变量

  • 写在函数和大括号外面的变量,称之为全局变量
  • 作用域:从定义的那一行开始,一直到文件的末尾
  • 全局变量可以先定义在初始化,也可以定义时初始化
  • 存储:静态区
  • 程序已启动就会分配存储空间,知道程序结束才会释放
int num;
int num1 = 20;

三、局部变量

  • 写在函数或者代码块中的变量,称之为局部变量
  • 作用域:从定义的那一行开始,一直到遇到大括号或者return
  • 局部变量可以先定义再初始化,也可以定义的同时初始化
  • 存储:栈
  • 存储在栈中的数据有一个特点,系统会自动给我们释放
int main(int argc, const char * argv[])
int num = 10;
{
    int value;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,891评论 1 10
  • 第一天 一.内联函数(inline) 函数调用的时候需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作...
    陈果123阅读 1,145评论 0 1
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,374评论 0 6
  • 草长莺飞,杨柳吐绿,淅淅沥沥烟雨,朦朦胧胧雨巷里的春愁总是心心里填上一片柔软。你可以在微雨中欣赏着“草色近看遥却无...
    三月的桃花之半缘君阅读 558评论 0 0
  • 我看着很多人 朝我走来 又或者 我被很多人包裹其中 我看不清她们的...
    一个杰阅读 378评论 0 0