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; }
广告