美文网首页
变量的作用域

变量的作用域

作者: youngyunxing | 来源:发表于2016-03-26 19:26 被阅读59次

1.先讲讲代码块

  • 定义:代码快就是 { ... } ,语言描述就是被大括号括起来的算一个代码块 例如:
  {
      //这是一个代码块,这里定义的变量,在代码块结束后,会被销毁
  }
  • 代码块可以嵌套,一个代码块中可以包含多个代码块,子代码块亦可以继续包含代码块
{
        //父代码块

        {
             //子代码块
        }//执行完这一行后,子代码块结束,里面定义的变量会被释放

        //父代码块
}

2.说说作用域

  • 作用域可以认为是变量的生命周期,从变量定义的那一行代码开始,到所在的代码块结束为变量的作用域
  • 子代码块内的变量优先级比父代码块内的同名变量优先级要高.也就是说,如果父代码块和子代码块内都定义了同名变量,那么子代码块内优先访问子代码块内的变量.

** 请看题:**

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    int score = 100;
    {
        int score  = 200;
        {
            score = 50;
            printf("%d\n",score);//输出 50
        }
        printf("%d\n",score);//输出 50
    }
    printf("%d\n",score);//输出 100
 
    return 0;
}

原因:
为了便于讲解
int score = 100;这个score我们认为是score1
int score = 200,这个score我们认为是score2

  • score = 50;
    这句话中score对应的是score2,因为这行代码所在代码块没有定义变量score,所以会向它的父代码块查询,然后就找到了score2,然后将score2修改为50
  • 第一次打印
    printf所在的代码块,没有定义score变量,向父代码块查询,查询到 score2,score2已被修改为50;所以输出50;
  • 第二次打印
    printf 所在代码块已经有定义的变量score2,直接输出结果为50,输出完成后,下一行代码块就结束了,因此score2会被释放掉
  • 第三次打印
    printf 所在代码块定义有score1,直接输出100

作用:

当然是节约内存了
例如:

int main()
{
    {
        //定义了跟多变量,申请了很多内存
    }
    //这里又用不到上面代码块中的数据,那么就把上面的一堆东西放入一个代码块
}

全篇完

相关文章

  • 第四章 作用域和内存问题

    变量的作用域? 变量作用:起作用域:区域,范围变量起作用的地方 变量的生命周期,变量生于这个作用域,死于这个作用域...

  • JS作用域链

    作用域 变量的作用域 变量的作用域有两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,...

  • 【前端】-023-JavaScript-进阶篇-变量作用域

    变量作用域 JavaScript中变量的作用域 采用静态作用域(变量定义的位置决定了变量的引用) 没有块级作用域,...

  • js中作用域与作用域链

    js中作用域与作用域链 作用域 *作用域基本概念 作用域一般指变量的作用范围,变量分为全局变量和局部变量,对应的作...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 作用域与变量提升

    作用域与变量提升 作用域 JS中变量的作用域有全局作用域和局部作用域两种,作用域简单来讲就是变量与函数的可访问范围...

  • php基础知识回顾-1

    1.变量作用域 php变量有四种作用域:局部作用域、全局作用域,静态作用域、参数作用域 在局部调用全局变量需要使用...

  • 关于作用域链

    作用域 先来谈谈变量的作用域变量的作用域无非就是两种:全局变量和局部变量。全局作用域:最外层函数定义的变量拥有全局...

  • JavaScript关于作用域、作用域链和闭包的理解

    作用域 先来谈谈变量的作用域变量的作用域无非就是两种:全局变量和局部变量。全局作用域:最外层函数定义的变量拥有全局...

  • JavaScript 中的变量作用域

    JavaScript 中的变量作用域 JavaScript中的变量作用域被定义为函数作用域。 变量的值在定义该变量...

网友评论

      本文标题:变量的作用域

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