局部变量(local variable)和全局变量(global variable)的区别

局部变量是一种可以使用的变量类型,变量的范围和范围在声明它的方法或语句块中。它在foreach语句中用作迭代变量,在特定catch子句中用作异常变量,在using语句中用作资源变量。它也可以用作常量,其值不能在声明它的方法或语句块中修改。...

什么是局部变量(local variable)?

局部变量是一种可以使用的变量类型,变量的范围和范围在声明它的方法或语句块中。它在foreach语句中用作迭代变量,在特定catch子句中用作异常变量,在using语句中用作资源变量。它也可以用作常量,其值不能在声明它的方法或语句块中修改。

局部变量是程序编程和更一般的模块编程的基础:局部范围变量用于避免全局变量可能产生的副作用问题。

在大多数语言中,局部变量是自动变量,直接存储在调用堆栈中。这意味着,当递归函数调用自身时,函数的每个实例中的局部变量都被给定了特定地址。因此,可以声明、写入和读取此范围的变量,而不会对声明它们的块之外的函数产生任何副作用。

你需要知道的是关于局部变量

  • 执行函数时会创建一个局部变量,一旦执行完成,该变量就会被销毁。
  • 局部变量可以通过声明它们的函数内的语句来访问。
  • 局部变量在程序中任何块或函数的开头声明。
  • 如果局部变量未初始化,则默认情况下它采用垃圾值。
  • 除非指定,否则局部变量存储在堆栈内存中。
  • 局部变量的任何变化都不会影响程序的其他功能。
  • 数据共享是不可能的,因为局部变量的数据只能由一个函数访问。
  • 在一个函数中修改局部变量的值时,在另一个函数中将看不到更改。
  • 局部变量需要传递参数才能访问其他函数中的值。
  • 任何不同函数中的局部变量的名称可以相同或不同,因为这些函数仅对在该函数中声明的函数可用。

什么是全局变量(global variable)?

顾名思义,全局变量是可在程序中全局或任何地方访问的变量。一旦被声明,它们在整个程序运行时都会保留在内存中。这意味着它们可以在任何时候通过任何函数进行更改,并可能影响整个程序。

一组全局变量被称为全局状态或全局环境,因为当它们组合在一起时,会在程序运行时定义程序或环境的各个方面。全局变量通常在所有函数之上声明,并保持最小值,因为所有函数都可以在程序运行时操作它们,这被大多数程序员认为是危险的,因为它们可能会意外更改,导致错误。

您需要了解的是全局变量

  • 在整个程序执行期间,程序中存在一个全局变量。
  • 它可以通过程序中的所有功能在整个程序中访问。
  • 在定义任何函数或块之前,通常在任何程序的开头声明全局变量。
  • 如果全局变量未初始化,则默认为零。
  • 全局变量存储在存储器的数据段中,由编译器决定。
  • 全局变量的任何更改都会影响整个程序,无论其在何处使用。
  • 数据共享是可能的,因为多个函数可以访问相同的全局变量。
  • 当在一个函数中修改全局变量的值时,在程序的其余部分可以看到更改。
  • 全局变量不需要参数传递,因为它在整个程序中都可见。
  • 在程序的任何点访问全局变量时,不能更改全局变量的名称,因为它在程序开始时只声明和定义了一次。

局部变量(local variable)和表格中的全局变量(global variable in tabular)的区别

比较基础局部变量全局变量
通道局部变量可以通过声明它们的函数内的语句来访问。 程序中的所有函数都可以在整个程序中访问全局变量。
创造执行函数时会创建一个局部变量,一旦执行完成,该变量就会被销毁。 在整个程序执行期间,程序中存在一个全局变量。
公告局部变量在程序中任何块或函数的开头声明。 在定义任何函数或块之前,通常在任何程序的开头声明全局变量。
初始化如果局部变量未初始化,则默认情况下它采用垃圾值。 如果全局变量未初始化,则默认为零。
存储除非指定,否则局部变量存储在堆栈内存中。 全局变量存储在存储器的数据段中,由编译器决定。
变更局部变量的任何变化都不会影响程序的其他功能。 全局变量的任何更改都会影响整个程序,无论其在何处使用。
数据共享数据共享是不可能的,因为局部变量的数据只能由一个函数访问。 数据共享是可能的,因为多个函数可以访问相同的全局变量。
价值变更在一个函数中修改局部变量的值时,在另一个函数中将看不到更改。 当在一个函数中修改全局变量的值时,在程序的其余部分可以看到更改。
参数传递全局变量不需要参数传递,因为它在整个程序中都可见。 全局变量不需要参数传递,因为它在整个程序中都可见。
命名任何不同函数中的局部变量的名称可以相同或不同,因为这些函数仅对在该函数中声明的函数可用。 在程序的任何点访问全局变量时,不能更改全局变量的名称,因为它在程序开始时只声明和定义了一次。

局部变量的优缺点

优势

  • 局部变量仅在执行函数的有限时间内使用内存;之后,可以重用相同的内存位置。
  • 使用局部变量可以保证任务运行时变量值保持不变。
  • 局部变量可以在不同的函数中被赋予相同的名称,因为它们只能由声明它们的函数识别。

缺点

  • 调试局部变量的过程非常复杂。
  • 模块之间不可能共享数据,因此需要重复传递公共数据。
  • 局部变量的范围非常有限。

全局变量的优缺点

优势

  • 只需要一个声明。
  • 程序中的所有模块都可以访问全局变量
  • 如果所有函数都访问相同的数据,则非常合适。
  • 它可以使程序更容易阅读常数。

缺点

  • 程序中的任何语句都可以更改该值。
  • 如果全局变量由于代码重构而中断,则需要更改调用它们的所有模块。
  • 这使得调试更加困难。
  • 如果模块使用全局变量,则取决于模块,如果出现其他模块,则每次都必须重新设计每个模块。

  • 发表于 2022-09-09 07:45
  • 阅读 ( 44 )
  • 分类:教育

你可能感兴趣的文章

变量(variables)和java中的数据字面值(data literals in java)的区别

...变量与数据文本的表格形式 6. 摘要 什么是java中的变量(variables in java)? 变量是在内存中存储值的地方。每个内存位置都可以存储特定类型的数据。Java语言支持八种原始数据类型。它们是byte、short、int、long、boolean、float、double...

  • 发布于 2020-10-19 08:52
  • 阅读 ( 260 )

标识符(identifier)和变量(variable)的区别

...性。有意义的标识符也使程序易于理解。 什么是变量(a variable)? 在编程中,需要存储数据。对存储的数据进行计算。这些数据应该存储在内存位置。变量是用来保存数据的容器或存储区域。为变量指定一个唯一的名称或标识符...

  • 发布于 2020-10-19 14:52
  • 阅读 ( 918 )

班(class)和实例变量(instance variables)的区别

...类与实例变量以表格形式显示 6. 摘要 什么是类变量(class variables)? 当只有一个变量副本与类的所有实例共享时,这些变量称为类变量。类变量是在任何方法之外的类中声明的变量。这些变量包含关键字静电。这些变量与类关联...

  • 发布于 2020-10-19 16:54
  • 阅读 ( 304 )

作用域如何影响powershell脚本

...。以下命令将显示哪些变量和别名具有AllScope属性: Get-Variable | Where-Object {$_.Opti*** -match 'AllScope'}
 Get-Alias | Where-Object {$_.Opti*** -match 'AllScope') 作用域 在我们第一次了解作用域时,我们将从PowerShell会话开始,其中变量$MyVar被...

  • 发布于 2021-04-11 03:54
  • 阅读 ( 257 )

如何在windows中使用全局系统环境变量

...and prompt or batch scripts is probably well aware of built in environment variables Windows offers (i.e. Path, WinDir, ProgramFiles, UserProfile, etc.). If you find yourself using a particular value over and over, wouldn’t it be great if you had your own variable which you can use the same way as...

  • 发布于 2021-04-13 04:31
  • 阅读 ( 173 )

因变量(dependent variables)和自变量(independent variables)的区别

因变量与自变量 说到数学,有那么多的术语和公式。有些人觉得很有趣,而有些人觉得很难理解。但是数学是生活的一部分;没有它,科学永远不会成为事实。因为数学对一切都有解释;因为它,生活似乎更容易。这就是为什...

  • 发布于 2021-06-23 12:20
  • 阅读 ( 1334 )

地方的(local)和全局变量(global variables)的区别

局部变量与全局变量 全局变量可以在计算机程序中的任何地方使用。这意味着全局变量可以在许多函数中使用。这个全局变量可以在各种用户定义的头文件以及java包中使用。全局变量也可以通过编程方式更改。 当谈到局部变...

  • 发布于 2021-06-23 16:34
  • 阅读 ( 188 )

常量(constants)和变量(variables)的区别

...数字(例如,不仅仅是整数或分数)。   什么是变量(variables)? 变量是用作数字(或字符串和其他数据)占位符的符号。变量通常被可视化为字母或短语,在某些情况下,变量可以有多个可能的值。大多数情况下,变量用来表...

  • 发布于 2021-06-25 15:40
  • 阅读 ( 402 )

相关性(correlation)和回归(regression)的区别

...(correlation)? In statistics, we say there is a correlation between two variables if the two variables are related. If the relati***hip between the variables is a linear one, we can express the degree to which they are related using a number called Pearson’s correlation coefficient  .  takes...

  • 发布于 2021-06-27 11:05
  • 阅读 ( 909 )

常数(constant)和c语言中的变量(variable in c programming)的区别

...。它们的值分别为0、1、2、3等。 什么是c语言中的变量(variable in c programming)? 变量是保存数据的容器。它是标识存储区域的名称。每个变量都有一个唯一的名称来标识它。变量名可以有大小写字母、数字和下划线。为变量使用...

  • 发布于 2021-06-30 21:33
  • 阅读 ( 620 )
时生xxr
时生xxr

0 篇文章

相关推荐