c - 每次调用父函数时是否重新分配 C 中的静态变量?

标签 c static variables

假设我在 C 函数中声明了一个静态变量。

如果我多次调用该函数,每次调用该函数时静态变量是否都会在内存中重新分配?

如果它确实被重新分配,为什么最后的值总是保持不变?

例子:

void add()
{
    static int x = 1;
    x++;
    printf("%d\n",x);
}

int main()
{
    add(); // return 2
    add(); // return 3
    add(); // return 4
}

最佳答案

否 - 静态变量基本上是位于本地命名空间内的全局变量。

关于c - 每次调用父函数时是否重新分配 C 中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703980/

相关文章:

c++ - 使 DEV++ 与 Turbo C++ 的代码/ header 兼容

java - 静态字段的 JUnit 初始化

variables - Makefile : how to increment a variable when you call it?(bash 中的 var++)

python - Redshift - 变量的打印输出

c - 多线程服务器无法处理多个客户端

c - 在 freebsd 中,如何知道编译期间内核中启用了哪些选项

c - 在C中使用Windows API进行多线程

c++ - 为什么从 'const reference to base' 对象初始化 'constexpr derived' 对象不会产生常量表达式?

java - 其中私有(private)和静态方法的行为与仅私有(private)方法不同

ruby - 无法为变量 : undefined method `[]' for nil:NilClass (NoMethodError) 赋值