局部变量和全局变量之间的差异

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 13 可能 2024
Anonim
【24-局部变量和全局变量】 232 局部变量和全局变量 01 基本概念和区别
视频: 【24-局部变量和全局变量】 232 局部变量和全局变量 01 基本概念和区别

内容


正如我们前面讨论的,变量是给存储位置的名称,必须在使用变量之前声明它。在C语言中,所有变量都在程序启动时声明。在C ++中,变量可以在指令中使用之前的任何时间声明。

变量分为“本地”变量和“全局”变量,这是我们讨论的主要主题。这里,局部变量和全局变量之间的主要区别在于,局部变量是在功能块内部声明的。相反,全局变量在程序中的函数外部声明。

让我们研究一下局部变量和全局变量之间的更多差异以及比较表。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 好处
  5. 缺点
  6. 结论

比较表:

比较基准 局部变量 全球变量
宣言 变量在函数内部声明。
变量在任何函数外部声明。
范围
在函数内,在函数内对其进行声明。在整个程序中。

未初始化的局部变量导致存储垃圾值。默认情况下,未初始化的全局变量存储零。
访问 在声明它们的函数内部,只能由该语句访问。 整个程序中的任何语句均可访问。
资料共享不提供便利的
生活当输入功能块并在退出时销毁时创建。 在程序执行的整个过程中始终存在。
存储
除非指定,否则局部变量将存储在堆栈中。
存储在由编译器确定的固定位置。
参数传递必要的全局变量不需要。
变量值的变化局部变量中暗含的任何修改都不会影响程序的其他功能。在函数的全局变量中应用的更改反映了整个程序中的更改。

局部变量的定义

一种 局部变量 总是在功能块中声明。在C语言中,在代码块的开头声明局部变量。在C ++中,可以在使用它们之前在代码块中的任何位置声明它们。只能通过在声明局部变量的函数内部编写的语句访问局部变量。从某种意义上说,它们是安全的,它们不能被同一程序的任何其他功能访问。


局部变量一直存在,直到函数的块正在执行,然后在执行退出该块后销毁。一旦执行离开声明它们的块,局部变量就会丢失其内容。

其背后的原因是,除非指定了本地变量的特殊存储,否则它们将存储在堆栈中。堆栈本质上是动态的,并且内存位置的变化导致了为什么在函数块存在后局部变量不保持其值的原因。

注意:
但是,有一种方法可以通过使用“静态”修饰符来保留局部变量的值。

全局变量的定义

一种 全局变量 在程序中存在的所有函数之外声明。与局部变量不同,全局变量可以由程序中存在的任何函数访问。全局变量不是很可靠,因为可以通过程序中存在的任何函数来更改它们的值。

它们将一直存在,直到整个程序完全执行为止。全局变量将保留其值,直到程序执行为止。原因是它们存储在编译器决定的固定内存区域中。

全局变量在多个功能正在访问同一数据的情况下很有用。使用大量的全局变量可能会出现问题,因为可能会对全局变量的值进行不必要的更改。

  1. 局部变量之所以称为“局部变量”,是因为它们仅被声明在函数内部的函数中的语句所知,而对该函数块外部的任何其他函数都不知。对于全局变量,它们对于程序中存在的每个函数都是已知的。因此,它们被称为“全球”。
  2. 全局变量将保留其值,直到程序进入执行阶段为止,因为它们存储在编译器确定的固定位置。局部变量存储在堆栈中;因此,它们不会保留其值,因为“堆栈”本质上是动态的,但是可以使用“静态”修饰符来指示编译器保留其值。
  3. 如果用相同的名称声明了全局变量和局部变量,则声明了局部变量的代码块的所有语句将仅引用局部变量,而对全局变量无效。
  4. 当程序的控制退出声明了局部变量的块时,局部变量将被销毁。但是,当整个程序终止时,全局变量将被破坏。

好处

局部变量

  • 局部变量的主要好处是不会意外更改数据。该变量在一个块内声明,这些代码块使用该变量并避免了不良的副作用。
  • 仅当执行包含变量的块时,局部变量才会在有限的时间段内消耗内存。

全局变量


  • 当您在程序中处理多个操作相同数据的函数时,全局变量非常有用。
  • 通过实现全局变量,将更容易在整个程序中应用需要进行的更改。
  • 我们可以从任何地方或通过该程序的任何随机功能进行访问。

缺点

局部变量

  • 局部变量的范围受到限制。
  • 禁止数据共享。
  • 它们无法在调用之间保留数据,因为局部变量是在块的每个入口和出口处生成和删除的。但是,可以使用static修饰符保留值。

全局变量

  • 使用大量全局变量可能会导致程序错误的产生。
  • 它引起的主要问题是由于在整个程序中散布的全局变量而意外发生的更改。
  • 这也可能增加执行代码重构的需要,这是一个非常广泛的过程,其中整个程序代码都将被重组。

结论:

编写程序时,局部变量和全局变量都是必需的,并且同样是必需的。但是,在大型程序中声明大量全局变量可能会出现问题,因为这可能会导致对全局变量进行不必要的更改。而且很难确定程序的哪个部分进行了更改。因此,应该避免声明不必要的全局变量。