函数中的static 变量只被初始化一次,那如果一个函数中的变量用另一个函数调用初始化会怎么样
时间: 2024-04-14 19:29:20 浏览: 139
详解C++中static的用法
静态变量只会在首次执行到其声明的函数时进行初始化,并且只会初始化一次。无论是在同一个函数内部还是在其他函数中调用初始化静态变量,都不会导致变量重新初始化。
例如,考虑以下示例:
```cpp
#include <iostream>
void func1() {
static int staticVar = 0; // 静态变量只会在首次执行到该语句时进行初始化
std::cout << "func1: " << staticVar << std::endl;
staticVar++;
}
void func2() {
func1(); // 调用func1函数
}
int main() {
func1(); // 输出: func1: 0
func1(); // 输出: func1: 1
func2(); // 输出: func1: 2
return 0;
}
```
在上面的示例中,func1函数包含一个静态变量staticVar,并在每次调用该函数时递增其值并输出。无论是在main函数中直接调用func1,还是通过func2间接调用func1,静态变量只会初始化一次,并且在每次调用时保留其值。因此,输出结果会根据调用的次数递增。
阅读全文