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

    如何设置DNS的SPF记录 Introduction SPF的完整意思为 "Sender Policy Framework".翻译过来就是发送方策略框架,是一项跟 DNS 相关的技 ...

  2. android显示证书sha1

    创建证书可以用命令 keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 或者andro ...

  3. 怎样进行Android UI元素设计

    Android UI元素里面包含了许多的内容,比如:该平台由操作系统.中间件.用户界面和应用软件组成,一个应用程序要想受用户喜爱,那么UI可不能差. Android为相似的编程名词引入了一些新的术语, ...

  4. java学习笔记(三)字符串

    字符串String 创建方法: 一·通过new创建  String  str1= new String("abc"); 二 直接创建   String str2="abc ...

  5. 黄聪:主机宝IIS版ISAPIRewrite伪静态软件操作演示

    下载ISAPIRewrite伪静态破解文件 链接: http://pan.baidu.com/s/1dDEOLl3 密码: yx15 解压到主机宝ISAPIRewrite安装目录即可.如果提示有文件正 ...

  6. AsyncTask的学习

    具体的用法请看我之前的一篇随笔,用php+mysql+json实现用户反馈. AsyncTask的目标是为你的线程提供管理服务. AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,这些方 ...

  7. Guava 8-区间

    范例 List scores; Iterable belowMedian =Iterables.filter(scores,Range.lessThan(median)); ... Range val ...

  8. 客户端获取服务端自定义类数据 z

    客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...

  9. windows timeGetTime() 函数 获取系统从开机到现在的毫秒时间值

    #include <windows.h> #include <iostream> #pragma comment( lib,"winmm.lib" ) in ...

  10. [Flex] as3xls读取excel,修改保存单表(一)

    经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此. <?xml version="1.0" encodin ...