美文网首页
OC中的变量与常量

OC中的变量与常量

作者: 邓布利多教授 | 来源:发表于2019-03-26 11:29 被阅读0次
    从我的理解出发,在OC中,变量包括常量,变量是OC中对所有类型定义的统称。书上说:用关键字const修饰的变量称之为常量,它的值是在定义的时候就确定的,是不可修改的,表示变量值只读

    我们在写代码的时候,在初始化的时候没有值,叫做声明;
    初始化的时候有值,叫做定义。
    例如:

    /**
    声明
    */
    int count;
    
    /**
    定义
    */
    int count = 10;
    

    变量

    变量?值能变化的量就变量?谁能告诉我变量的定义是什么?不要跟我说什么成员变量实例变量的这些东西。我只想知道“变量”这两个字在OC中的真是定义。

    常量

    用const修饰的变量叫做常量。它的值是在定义的时候就确定的,是不可修改的,表示变量值只读。

    我们常用的变量有:
    • 局部变量
    • 全局变量
    • 实例变量
    • 基本数据类型变量
    • 静态变量
    • 常量
      反正我常用的就这些个,至于还有没有别的,答案是肯定的,必须有啊,不用说的都知道,只不过其他的变量还有好多,关于怎么分类的话,就麻烦知识渊博的人来讲讲吧
      接下来介绍一下这几种变量,说的不好,有错误的欢迎指出,谢谢了!
    • 1、局部变量

    写在函数方法内的变量,称之为局部变量。
    作用域是从变量定义的那一行开始,一直到遇到该函数方法的结束大括号或者return或者break之间。
    存储区域是在栈区,存储在栈中的数据有一个特点,系统会自动释放。

    • 2、全局变量

    写在函数和代码块外部的变量,称之为全局变量。
    作用域是整个工程的源文件。
    存储区域是在静态区,程序一启动就会分配存储空间,直到程序结束才会释放。

    - 扩展

    extern
    全局变量的声明有两种方式:
    一种是在.h文件用extern声明,然后在.m文件定义,在调用这个全局变量的文件需要引入该文件的.h文件,例如:

    /**
    .h文件
    */
    extern NSString * const string;
    
    /**
    .m文件
    */
    NSString * const string = @"全局变量";
    

    另一种方式是在.m文件定义,在需要用到的地方通过extern引入,不需要引入头文件,例如:

    /**
    .m文件
    */
    NSString * const string = @"全局变量";
    
    /**
    用到的地方
    */
    extern NSString * const string;
    
    • 3、实例变量

    对类的声明的变量叫做实例变量。
    作用域是当前源文件。
    存储区域是在堆区,有人会问为什么?我瞎说的,我是根据初始化类的时候会用到alloc、init、new,所以我判定实例变量是存储在堆区的。(这个存储区域我真的不知道这么说对不对,希望知道准确答案的大佬点明)

    • 4、基本数据类型变量

    对基本数据类型的声明叫做基本数据类型变量。
    作用域是当前源文件。
    存储区域是在静态区,程序一启动就会分配存储空间,直到程序结束才会释放。

    • 4、静态变量

    对所有变量用static修饰之后叫做静态**变量(原本是什么变量,就在原本的名称前面加上静态俩字),简称静态变量。
    作用域是函数方法内或者当前源文件内。
    存储区域是在静态区,程序一启动就会分配存储空间,直到程序结束才会释放。

    - 扩展

    static
    对于局部变量来说,用static修饰过,只会初始化一次且在程序中只有一份内存,不会改变局部变量的作用域,但是会延长局部变量的生命周期(直到程序结束才销毁)。

    对于全局变量来说,用static修饰过,只会初始化一次且在程序中只有一份内存,作用域会变更到当前源文件,外部是访问不到该全局变量的(即使在外部使用extern关键字也无法访问)。

    • 5、常量

    用关键字const修饰的变量称之为常量,它的值是在定义的时候就确定的,是不可修改的,表示变量值只读。
    作用域是整个工程的源文件。
    存储区域是在常量区,程序一启动就会分配存储空间,直到程序结束才会释放。

    - 扩展

    const
    const修饰变量有四种写法:
    1、const NSString *str1 = @"123";
    2、NSString const *str2 = @"123";
    3、NSString * const str3 = @"123”;
    4、const NSString * const str3 = @"123”;
    修饰基本数据类型也是这四种写法,简单的理解就是3和4的str3的内存中的内容不能被修改。

    相关文章

      网友评论

          本文标题:OC中的变量与常量

          本文链接:https://www.haomeiwen.com/subject/kpowmqtx.html