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

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  2. 20个超实用的JavaScript技巧及最佳实践

    1.第一次给变量赋值时,别忘记var关键字   给一个未声明的变量赋值,该变量会被自动创建为全局变量,在JS开发中,应该避免使用全局变量.   2.使用===替换==   并且永远不要使用=或!=. ...

  3. ASP.NET运行机制原理

    ASP.NET运行机制原理 一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过 ...

  4. tcp-ip-状态详解(转)

    TCP正常建立和关闭的状态变化     TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手.   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建 ...

  5. (C#) 多线程修改布尔值, volatile

    参考: https://msdn.microsoft.com/en-us/library/x13ttww7(VS.80).aspx http://stackoverflow.com/questions ...

  6. MVC之Razor语法

    Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...

  7. [CSS]置换和非置换元素

    转自:http://blog.doyoe.com 先进一个题外话 在面试一个 重构(各大公司的叫法可能不太一样)时,我喜欢从一个点开始问,然后一直延展下去成为一条线,甚至是一个面,直到问到不会的地方, ...

  8. PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址

    PHP $_SERVER['HTTP_REFERER'] 使用 $_SERVER['HTTP_REFERER'] 将很容易得到链接到当前页面的前一页面的地址.一个例子如下: index.php(实际地 ...

  9. C++学习24 虚析构函数

    在C++中,构造函数用于在创建对象时进行初始化工作,不能声明为虚函数.因为在执行构造函数前对象尚未创建完成,虚函数表尚不存在,也没有指向虚函数表的指针,所以此时无法查询虚函数表,也就不知道要调用哪一个 ...

  10. char 汉字

    Unicode/UCS总结: UCS和Unicode使用最大32bit来表示字符(它的范围很大,但不一定全使用,常使的是UCS-2),它用2~4个字节的空间描述了已知的接近全部的字符(并且仍在更新,还 ...