函数里面的static变量
在C++中,static关键字可以用于函数内部的变量声明,这种变量被称为“函数内部的静态变量”,也称为“局部静态变量”。与普通的局部变量不同,函数内部的静态变量在函数执行完毕后并不会被销毁,而是会一直存在于内存中,直到程序结束才会被销毁。
函数内部的静态变量具有以下特点:
1. 只会被初始化一次:当函数第一次被调用时,静态变量会被初始化。之后每次调用函数时,都会使用上一次的值,而不会重新初始化。
2. 作用域仅限于函数内部:静态变量只能在函数内部使用,无法在函数外部访问。
3. 生命周期长:静态变量的生命周期与程序的生命周期相同,即使函数执行完毕,静态变量仍然存在于内存中。
4. 存储在静态存储区:静态变量存储在静态存储区,而不是栈中。因此,静态变量的内存空间是固定的,不会随着函数的调用次数而增加或减少。
函数内部的静态变量在实际编程中有很多应用场景。例如,可以用它来记录函数被调用的次数,或者用它来缓存函数的计算结果,避免重复计算。下面是一个简单的例子:
```c++
#include <iostream>
using namespace std;
int func() {
    static int count = 0; // 函数内部的静态变量
    count++;
    return count;
}
int main() {
    for (int i = 0; i < 5; i++) {
        cout << func() << endl;
    }
    return 0;
}
```
上面的代码中,函数func()内部定义了一个静态变量count,每次调用函数时,count的值都会加1,并返回新的值。由于count是静态变量,所以它的值会一直保存在内存中,不会被销毁。因此,每次调用func()时,都会使用上一次的count值,并将其加1。
static修饰的变量输出结果如下:
```
1
2
3
4
5
```
可以看到,每次调用func()时,count的值都会增加,而不是重新从0开始计数。
总之,函数内部的静态变量是一种非常有用的编程工具,可以帮助我们实现一些特殊的功能。但是,在使用静态变量时,需要注意变量的作用域和生命周期,以免出现意外的错误。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。