📜  C++中的变量范围(1)

📅  最后修改于: 2023-12-03 14:39:58.059000             🧑  作者: Mango

C++ 中的变量范围

在 C++ 中,变量的范围(Scope)指的是变量可以被访问的区域。C++ 中的变量范围主要有四种类型,包括:

  • 全局变量
  • 局部变量
  • 静态变量
  • 函数参数

接下来我们将详细介绍这四种变量范围类型及其特性。

全局变量

全局变量是定义在函数外部的变量,它们的作用域始于定义处,结束于文件尾或被其他同名全局变量覆盖。

定义全局变量的方式为在函数外部使用关键字 extern 或者不使用任何关键字,直接定义变量。

// 使用 extern 定义全局变量
extern int global1 = 10;

// 直接定义全局变量
int global2 = 20;

全局变量在程序的任何地方都可以被使用,但是它们易于被误用,可以被任何函数改变,所以应该尽可能地避免使用全局变量。

局部变量

局部变量是定义在函数内部的变量,它们的作用域只限于定义它们的函数。局部变量可以在函数内部被访问,但不能在函数外被访问。

局部变量的定义方式和全局变量不同,定义在函数内部时需要在变量名之前加上类型说明符和关键字 auto 或者使用其他的定义方式。

void example() {
  // 使用 auto 和其他定义方式定义局部变量
  auto int a = 10;

  int b(20);

  int c{30};
}
静态变量

静态变量是局部变量的一种,但它们不同于普通的局部变量,它们的生命周期比普通局部变量更长。静态变量一般是指在整个程序的生命周期内都存在的变量,它们的作用域也只限于定义它们的函数。

在定义局部变量的同时使用关键字 static 可以将该变量声明为静态变量。定义静态变量的语法格式为:

static int x = 10;
函数参数

函数参数是在函数内部定义的局部变量,它们的作用域也只限于函数内部。函数参数在函数调用时被赋值,在函数执行结束后被销毁。

定义函数参数的方式与定义常规的局部变量类似,当调用函数时,会将实参传递给形参。

void example(int a, int b) {
  // 函数参数 a 和 b
  int sum = a + b;
}

总的来说,对于变量的使用要根据需要进行选择,尽可能地使用局部变量和静态变量,避免使用全局变量。