首页 > 编程笔记

C++局部变量和全局变量详解

根据作用范围划分,C++ 中的变量可以细分为局部变量和全局变量两种。在本文中,将详细介绍局部变量和全局变量的定义、特性和使用场景,并通过实例代码来详细解释它们。

局部变量

局部变量指的是在函数或者某个代码块内部定义的变量,这些变量只能在定义它们的函数或代码块中使用。

局部变量存储在栈内存中,当定义它的函数或者代码块执行完后,局部变量就会被销毁,占用的栈内存也会被回收。

举个简单的例子:
#include <iostream>

void myFunction() {
    int a = 10; // 局部变量
    std::cout << "Local variable value: " << a << std::endl;
}

int main() {
    myFunction();
    // std::cout << a; // 错误!因为局部变量 a 不在这个作用范围内

    {
        int b = 10;  //局部变量,位于 {} 代码块中
        std::cout << "Lacal Variable value:" << b << std::endl;
    }
    //std::cout << b;  // 错误!因为局部变量 b 不在这个作用范围内

    return 0;
}
在上述程序中,myFunction() 函数中定义了一个变量 a,其作用域仅仅限于 myFunction() 的函数体内。此外在 main() 函数中,变量 b 定义在{ }包裹的代码块内,其作用域仅限于{ }代码块内。

注意,函数形参的作用域也仅限于函数体内,所以形参也可以当做局部变量使用。

全局变量

全局变量指的是在所有函数之外定义的变量。

全局变量在整个程序的生命周期内都是可访问的。全局变量是在程序开始时就创建好了,程序运行结束时才销毁。

全局变量存储在全局数据区,它的作用域是整个程序,即在任何一个函数中都可以访问。全局变量一旦被修改,在其它函数中访问到的值也会随之而变。

举个简单的例子:
#include <iostream>

int a = 20; // 全局变量

void myFunction() {
    std::cout << "Global variable value: " << a << std::endl;
}

int main() {
    myFunction(); // 输出:Global variable value: 20
    std::cout << "Global variable value in main: " << a << std::endl; // 输出:Global variable value in main: 20
    return 0;
}
运行结果为:

Global variable value: 20
Global variable value in main: 20

局部变量VS全局变量


局部变量和全局变量各有优缺点,应根据实际需求和场景合理使用。

推荐阅读