• 全局变量 /static全局变量 /局部变量/成员变量/extern 分析


    part1

    全局变量/static全局变量 

    1 若程序只有一个源文件(就是尼玛就一个类),则没区别,都是存储在静态区.

       (全局变量存储在静态区中 程序启动时就会分配存储空间 直到程序结束才会释放)

    2 若程序有多个源文件(多个文件组成),则有区别

       全局变量: 可以extern外部文件引用,

        static 全局变量: 则不可以外部文件引用 (仅仅本文件独享)

    part2

    static:修饰变量(全局,局部)使用 / 全局变量/static变量 存储在静态区 程序运行 只初始化一次,程序结束,变量才会销毁

    两个作用 

    ps1 :局部变量copy 进静态区,延长局部变量声明周期,程序运行期间 一直存在

    ps2: 防止全局变量外部引用,外部引用extern

    iOS 局部变量 全局变量 成员变量

     

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量)

        成员变量不可离开类 离开了类就不是成员变量

      成员变量不能再定义的同事初始化

      成员量只能通过对象来访问

      成员变量存储在堆中(当前对象对应的堆得存储空间中) 不会被系统自动释放 只能有程序员手动释放

    二.局部变量 :写在代码块或函数中的变量为局部变量

      局部变量的作用域 : 从定义的那一行开始,一直到遇到大括号或return(也就是这个变量所在的代码块或函数结束时)

      局部变量可以先定义后初始化,也可以在定义的同时就初始化

      局部变量存储在栈里面 系统会自动释放

    三.全局变量 : 卸载函数外或大括号外的变量就是全局变量

      全局变量的作用域 : 从定义哪行开始 到文件末尾

        全局变量可以先定义再初始化,也可以定义的同时初始化

        全局变量存储在静态区中 程序启动时就会分配存储空间 直到程序结束才会释放

    #import "SFViewController.h"
    int instance2;//这叫全局变量 可以外部文件引用
    static int instance3 = 20;//这叫全局变量(仅仅本类使用)
    @interface SFViewController ()
    //@property (nonatomic ,copy)NSString *instance5;这也叫成员变量
    {
     NSString *instance1;//这叫成员变量
    }
    @end
    NSString *instance;// 这也叫全局变量
    @implementation SFViewController
    {
    
        NSString *instance4;//这也叫成员变量
    }
    //ps: h文件成员变量定义逻辑 同m中.

    ps: oc不支持 .h文件中定义全局变量 (个人猜测:头文件经常被引用,容易引起重复定义)

  • 相关阅读:
    apt 安装 Oracle Java JDK
    apt 安装 tomcat
    apt安装mysql
    yum 常用命令
    Ubuntu apt-get 更换源
    没有解决不了的bug,静下心一步步排查,早上一个小时就找出问题了
    关于看书学习的一点感悟
    利用暗时间看好了六大原则,下面开始练习23种设计模式
    养成看书思考的习惯
    凡事预则立,有时候还是得不断的去巩固一些基础知识的
  • 原文地址:https://www.cnblogs.com/ly1973/p/9026126.html
Copyright © 2020-2023  润新知