📅  最后修改于: 2023-12-03 14:39:58.059000             🧑  作者: Mango
在 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;
}
总的来说,对于变量的使用要根据需要进行选择,尽可能地使用局部变量和静态变量,避免使用全局变量。