📜  C++中的可变作用域

📅  最后修改于: 2020-12-17 05:02:24             🧑  作者: Mango


作用域是程序的一个区域,从广义上讲,可以在三个地方声明变量-

  • 在一个称为局部变量的函数或块中,

  • 在函数参数的定义中称为形式参数。

  • 在所有函数之外,这称为全局变量。

在随后的章节中,我们将学习什么是函数及其参数。在这里,让我们解释什么是局部变量和全局变量。

局部变量

在函数或块内声明的变量是局部变量。它们只能由该函数或代码块中的语句使用。局部变量在其自身之外的函数中未知。以下是使用局部变量的示例-

#include 
using namespace std;
 
int main () {
   // Local variable declaration:
   int a, b;
   int c;
 
   // actual initialization
   a = 10;
   b = 20;
   c = a + b;
 
   cout << c;
 
   return 0;
}

全局变量

全局变量是在所有函数之外定义的,通常在程序顶部。全局变量将在程序的整个生命周期中保持其值。

全局变量可以由任何函数访问。也就是说,在声明之后,全局变量可在整个程序中使用。以下是使用全局和局部变量的示例-

#include 
using namespace std;
 
// Global variable declaration:
int g;
 
int main () {
   // Local variable declaration:
   int a, b;
 
   // actual initialization
   a = 10;
   b = 20;
   g = a + b;
  
   cout << g;
 
   return 0;
}

程序的局部变量和全局变量可以具有相同的名称,但函数内局部变量的函数将优先。例如-

#include 
using namespace std;
 
// Global variable declaration:
int g = 20;
 
int main () {
   // Local variable declaration:
   int g = 10;
 
   cout << g;
 
   return 0;
}

编译并执行上述代码后,将产生以下结果-

10

初始化局部变量和全局变量

定义局部变量后,系统不会对其进行初始化,您必须自己对其进行初始化。如下定义全局变量时,系统会自动初始化全局变量-

Data Type Initializer
int 0
char ‘\0’
float 0
double 0
pointer NULL

正确初始化变量是一种好的编程习惯,否则有时程序会产生意外的结果。