温馨提示×

c++ static变量存储在哪

c++
小樊
85
2024-11-30 16:41:46
栏目: 云计算

在C++中,static变量的存储位置取决于它们是在函数内部还是外部定义的。

  1. 如果static变量在函数内部定义,则它存储在程序的静态存储区(或称为全局数据区)。这个存储区域在程序启动时分配内存,并在程序结束时释放内存。静态存储区的内存地址在整个程序运行期间是唯一的,因此不同函数中的同名static变量将引用同一块内存。
void func() {
    static int x = 0; // x存储在静态存储区
}
  1. 如果static变量在函数外部定义,则它存储在全局数据区。与函数内部的static变量类似,全局数据区的内存地址在整个程序运行期间是唯一的。
int x = 0; // x存储在全局数据区

void func() {
    // ...
}

需要注意的是,static变量在程序的生命周期内只初始化一次。如果需要在函数内部修改全局变量或静态变量的值,只需在函数内部声明该变量即可,无需使用关键字static。

0