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;
}
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP