变量

作者: springerPrivate | 来源:发表于2017-05-09 12:38 被阅读0次

    作用域(Scope):

    变量的有效范围

    存储类别:

    静态存储方式:是指在程序运行期间分配固定的存储空间的方式。

    动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。

    局部变量

    定义在函数内部的变量称为局部变量(Local Variable)

    作用域:

    它的作用域仅限于函数内部,离开该函数后就是无效的,再使用就会报错

    几点说明:

    1) 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

    2) 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。

    3) 在语句块中也可定义变量,它的作用域只限于当前语句块。

    存储:

    函数形式参数、自动变量(未加static声明的局部变量)、函数调用实的现场保护和返回地址等数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。对自动变量来说,如果不赋初值则它的值是一个不确定的值。

    静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。静态局部变量在编译时赋初值,如果在定义局部变量时不赋初值的话,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。

    全局变量

    在所有函数外部定义的变量称为全局变量(Global Variable)

    作用域:

    全局变量的作用域默认是整个程序。OC中,如果全局静态变量在.h中声明,则作用域是整个程序,如果在.m中声明,则其作用域只在该类中。

    存储:

    全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不会动态地进行分配和释放;

    在OC中,不能再.h文件中声明全局变量,但是可以声明全局静态变量。

    当全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。

    相关文章

      网友评论

          本文标题:变量

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