c - 静态变量不在函数中保留它们的值

标签 c static-variables

<分区>

内部函数静态变量在再次调用时会保留它们的值,但为什么在这种情况下不会发生这种情况?

#include <stdio.h>

void print(void) {
    static int x;
    x = 10;
    x += 5;
    printf("%d ", x);
}

int main() {
    print();
    print();
    return 0;
}

输出为 15 15

最佳答案

您每次都分配一个新值:

static int x;
x = 10;             // <- assignment

你可能想要的是初始化:

static int x = 10;  // <- initialization

初始化在变量生命周期内只发生一次static 意味着变量在程序的整个执行时间内都存在。

关于c - 静态变量不在函数中保留它们的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906150/

相关文章:

c - 如何暂停进程并继续程序?

c - 方括号在 sscanf 中如何工作?

C++函数返回静态数组地址

objective-c - 需要内存管理帮助——静态类变量 Objective C

java - 为什么方法不能识别指向静态变量的变量?

c - strtok 的奇怪指针问题

c - strtod定义和传递指针的类型

c - 在C语言中获得计算机决策速度的方法

scope - 使用 C 预处理器来确定当前范围?

c++ - GCC 编译器对定义和使用的静态变量发出警告