C/C++ 中函数级别的静态变量何时初始化?


静态变量可以使用`static`关键字定义。它们是程序运行期间始终驻留在内存中的变量,即它们的生存期是整个程序运行过程。这与自动变量不同,自动变量只在函数运行时存在于内存中,函数结束时就会被销毁。

函数级别的静态变量在第一次使用时创建并初始化,尽管它们的内存是在程序加载时分配的。

演示 C 语言中函数级别静态变量的程序如下所示:

示例

 在线演示

#include<stdio.h>
int func() {
   static int num = 0;
   num += 5;
   return num;
}
int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}

输出

上述程序的输出如下所示。

5
10
15
20
25

现在让我们来理解上述程序。

函数`func()`包含一个初始化为 0 的静态变量`num`。然后`num`增加 5,并返回其值。显示此代码片段如下所示。

int func() {
   static int num = 0;
   num += 5;
   return num;
}

在`main()`函数中,使用`for`循环调用`func()`函数 5 次,并打印返回的`num`值。由于`num`是静态变量,因此它在程序运行期间保留在内存中,并提供一致的值。显示此代码片段如下所示。

int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}

更新于:2020年6月26日

716 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告