一、局部变量:
  • 定义在函数内部的变量以及函数的形参成为局部变量
  • 作用于:从定义那一行开始知道与其所在的代码块结束
  • 生命周期:从程序运行到定义那一行开始分配存储空间到程序离开该变量所在的作用域
特点:
  • 相同作用域内不可以定义同名变量
  • 不同作用域范围可以定义同名变量,内部作用域的变量会覆盖外部作用域的变量
注意:局部变量没有固定的初始化值,如果没有对局部变量进行初始化,那么局部变量中是一些随机的值,所以在开发中千万不要使用未初始化的局部变量
存储存储在栈中,当作用域结束系统会自动释放栈中的局部变量
 
二、全局变量:写在函数,代码块,形参列表外的变量,我们就称之为全局变量
作用范围:从定义的那一行开始一直到文件末尾
特点:
  • 全局变量和局部变量可以同名
  • 如果存在和全局变量同名的局部变量,那么局部变量会覆盖全局变量
注意:全局变量如果没有进行初始化,系统会默认将全局变量初始化为0
存储位置:存储在静态区中,他会随着程序的启动而创建,随着程序的结束而结束
 
三、全局变量分两种:
     1>外部全局变量:默认情况下所有的全局变量都是外部全局变量,即可以被其它文件访问的全局变量
          特点:可以定义同名的外部全局变量,多个同名的外部变量指向同一块存储空间
                    
     2>内部全局变量:只要给全局变量加上static关键字,只能在当前文件访问
          特点:也可以定义多个同名的内部全局变量,多个同名的全局变量如果不在同一个文件中,那么指向不同的存储空间
 
     3>如果既有内部全局变量又有外部全局变量,那么优先访问内部全局变量。
 
     extern:用于声明一个外部全局变量
     static:用于定义一个内部全局变量
     声明和定义的区别:声明不会开辟存储空间,定义会开辟存储空间
 
     当使用static修改局部变量之后,会延长局部变量的生命周期,并且会更改局部变量存储的位置,将局部变量从栈转移到静态区中
     只要使用static修饰局部变量之后,当执行到定义局部变量的代码就会分配存储空间,但是只有程序结束才会释放存储空间
 
     应用场景:当某个方法的调用频率非常高,而该方法中更有些变量的值是固定不变的,那么这个时候就 可以使用static来修饰该变量,让该变量只开辟一次存储空间,这样可以提高程序的效率和性能。
 
 
 
 
 
 
 

全局变量&局部变量的更多相关文章

  1. javascript 全局变量 局部变量 var 与不加var的区别

      一.外部的为全局,内部的为局部变量.   二.加var为局部变量(在方法内),不加var为全局变量(当方法内有一次使用后) <script type="text/javascrip ...

  2. JS的全局变量&局部变量

    <script> var i=10; //全局变量 j = 20; //全局变量 function(){ var i=30; //局部变量 h = 40; //全局变量 } </sc ...

  3. JavaScript练习题 全局变量 局部变量 作用域

    前沿:大家好~我是阿飞~本次 任何简单的事情都可以复杂化,本次让我们来做下搞事情的练习题吧 例题1: var a = 1; function fn1(){ var a = 2; alert(a); / ...

  4. 全局变量&局部变量,global&nonlocal

    ###全局变量与局部变量 1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量 2.函数内部的变量名如果第一次出现,且 ...

  5. var 全局变量 局部变量

    var 定义的不一定是局部变量 全局变量: 过程体(包括方法function(){},对象Object={})外的所有的变量,不管有没有加var关键字,他都是全局变量. 局部变量: 在过程体内(方法, ...

  6. 全局变量&局部变量&Static存储&Register变量

    1.局部变量 局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内:函数的形参就是局部变量: 2.全局变量 全局变量也称为外部变量,它是在函数外部定义的变量.全局变量的说明符为 ...

  7. 第十二篇 Python函数之全局变量&局部变量&递归函数

    全局变量:在定义的时候,顶头写的,没有任何缩进的变量就是全局变量. 全局变量的特点:在当前文件里的任何地方都可以进行调用 局部变量:在子程序里定义的变量,就是局部变量. 子程序:比如.py文件里,写的 ...

  8. 【python】-- 函数、无参/有参参数、全局变量/局部变量

    函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函 ...

  9. python——全局变量&局部变量

    >>> count = 5 >>> def function(): count = 10 print(10) >>> function() 10 ...

随机推荐

  1. LVS包转发模型和调度算法(转)

    LVS简介 Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来 讲, CPU.I/O处理能力很快会成为瓶颈.由于单台 ...

  2. c++builder6.0 mdi窗体+自定义子窗体

  3. MVC项目发布错误

    下面各个方法尝试采用: 重装Framework 32位的Windows: --------------------------------------------------------------- ...

  4. Mobirise

    网站建设器Mobirise v1.9.2 免费版 - 绿色软件联盟 2015年9月5日 - 网站建设器Mobirise是一个用户友好的程序,使您可以构建桌面和移动网站,准备在Javas cript中. ...

  5. MODBUS-寄存器与功能码学习

    分类 简称 起始地址 结束地址 能够使用的功能码 输出逻辑线圈/(可读写位)/(DI/O)(如继电器开关控制) 0x 00000 09999 0x01读一组逻辑线圈 0x05写单个线圈 0x0f写多个 ...

  6. HtmlparseUtil.java

    该类并不是一个通用的工具类,需要按自己的要求实现,这里只记录了Htmlparse.jar包的一些用法.仅此而已! 详细看这里:http://gundumw100.iteye.com/blog/7043 ...

  7. 注意,ruby循环体定义的变量在结束时后,变量还存在

    a = [1, 2, 3] for i in a b = 123 p i end p "b:#{b}" p i <ruby语言编程> 129页 倒数 第8行

  8. HTTP gzip和deflate的几点区别

    gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分:deflate是一种压缩算法,是huffman编码的一种加强. deflate与gzip解压的代码几乎相同,可以合成一块代码 ...

  9. mysql 用户权限设置【转】

    在Linux下phpStudy集成开发环境中,要先进入mysql下bin目录,执行mysql ./mysql -u root -p 1.创建新用户 通过root用户登录之后创建 >> gr ...

  10. windowns--HANDLE,

    HANDLE: 在windows程序中,有各种各样的资源(窗口.图标.光标等),系统在创建这些资源时会为他们分配内存,并返回标示这些资源的标示号,即句柄. 句柄指的是一个核心对象在某一个进程中的唯一索 ...