C++:关于静态变量-静态全局变量(函数外):

时间:2024-11-21 21:57:49
如果 staticVar 是定义在函数外的全局静态变量,那么它的作用域仅限于当前文件(内部链接),同样在整个程序生命周期内只会被初始化一次。


示例 1:静态局部变量

#include <iostream>

void func() {
    static int staticVar = 666; // 仅初始化一次
    std::cout << "staticVar = " << staticVar << std::endl;
    staticVar++;
}

int main() {
    func(); // 第一次调用,staticVar 被初始化为 666
    func(); // 第二次调用,staticVar 增加到 667
    func(); // 第三次调用,staticVar 增加到 668
    return 0;
}
输出:
staticVar = 666
staticVar = 667
staticVar = 668

示例 2:静态全局变量

#include <iostream>

static int staticVar = 666; // 静态全局变量,仅在本文件内可见

void func() {
    std::cout << "staticVar = " << staticVar << std::endl;
    staticVar++;
}

int main() {
    func(); // 第一次调用,staticVar 被初始化为 666
    func(); // 第二次调用,staticVar 增加到 667
    return 0;
}
输出:
staticVar = 666
staticVar = 667

特点