zoukankan      html  css  js  c++  java
  • 全局变量 /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文件中定义全局变量 (个人猜测:头文件经常被引用,容易引起重复定义)

  • 相关阅读:
    Linq to sql(四):查询句法(一)
    (转帖)用戶控件包裝器的设计与实现
    iptables 安装设置 针对游戏服务器
    Shell脚本加密
    Nginx配置文件nginx.conf中文详解
    C#获取默认浏览器的完整地址并在默认浏览器中打开对应的url地址
    HttpWebRequest类
    解决问题记录(3)-事务处理出错:连接打开但是在fetching状态中。
    程序生涯的几个感悟
    解决问题记录(4)-Oracle Not Support Parallel Transaction
  • 原文地址:https://www.cnblogs.com/ly1973/p/9026126.html
Copyright © 2011-2022 走看看