一、局部变量:
  • 定义在函数内部的变量以及函数的形参成为局部变量
  • 作用于:从定义那一行开始知道与其所在的代码块结束
  • 生命周期:从程序运行到定义那一行开始分配存储空间到程序离开该变量所在的作用域
特点:
  • 相同作用域内不可以定义同名变量
  • 不同作用域范围可以定义同名变量,内部作用域的变量会覆盖外部作用域的变量
注意:局部变量没有固定的初始化值,如果没有对局部变量进行初始化,那么局部变量中是一些随机的值,所以在开发中千万不要使用未初始化的局部变量
存储存储在栈中,当作用域结束系统会自动释放栈中的局部变量
 
二、全局变量:写在函数,代码块,形参列表外的变量,我们就称之为全局变量
作用范围:从定义的那一行开始一直到文件末尾
特点:
  • 全局变量和局部变量可以同名
  • 如果存在和全局变量同名的局部变量,那么局部变量会覆盖全局变量
注意:全局变量如果没有进行初始化,系统会默认将全局变量初始化为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. WSUS目录本地迁移

    生产环境中有一台win2003 server,安装了Microsoft Windows Server Update Services 3.0,作为所有windows server的内网补丁更新服务器, ...

  2. SQLite加密的方法(c#)

    http://blog.csdn.net/xjbx/article/details/2712236 设置下密码就可以了 http://bbs.csdn.net/topics/380018685 编译为 ...

  3. sqlserver 登录失败——孤立用户

    USE (数据库实例)hhwz; GO sp_change_users_login @Action='update_one', @UserNamePattern='数据库用户', @LoginName ...

  4. 补一篇关于Jackson和Gson的文章

    一.关于Gson的问题 问题1. 如果对象属性里有[],表示它是一个列表,需要用List对象进行封装,不能用String来定义,不然转不了 问题2. Gson在解析的时候,如果json中有转义字符 \ ...

  5. window.print实现打印特定控件或内容

    window.print打印指定div 首先我们可以把要打印的内容放在div中,然后用下面的代码进行打印. <html> <head> <script language= ...

  6. hadoop对于压缩文件的支持及算法优缺点

    hadoop对于压缩文件的支持及算法优缺点   hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,hadoop能够自动为我们 将压缩的文件解压,而不用我们去关心. 如果 ...

  7. spring外部化配置

    例如 <bean id="dataSource" class="....." p:username="aa" p:password=& ...

  8. repo安装

    repo是使用python开发的一个用于多版本管理的工具,可以和git协作,简化git的多版本管理. repo安装: 1.新建~/bin,并将此目录包含在path变量中(如果已存在,且已在path变量 ...

  9. 30天轻松学习javaweb_通过telnet连接http服务器

    telnet是windows自带的网络连接工具,可以用于连接任何服务器. 通过Telnet连接服务端 Telnet localhost 8080GET /news/1.html HTTP/1.1Hos ...

  10. C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)

    在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...