c - 全局变量和静态变量在 C 中如何协同工作?

标签 c static global-variables

我必须确定该程序的输出(无需在计算机上运行它)。我非常不确定全局变量和静态变量如何协同工作。

#include <stdio.h>

void f(int d);

int a = 1, b = 2, c = 3, d = 4;

int main()
{
    int a = 5, c = 6;
    f(a);
    f(b);
    f(c);
    printf("%d %d %d %d\n",a,b,c,d);
    return 0;
}

void f(int d)
{
    static int a = 0;
    a = a + 7;
    b = a + d;
    c++;
    d--;
    printf("%d %d %d %d\n",a,b,c,d);
}

最佳答案

局部变量定义总是“隐藏”同名的全局变量。内部作用域始终优先于外部作用域。当一个变量“隐藏”另一个变量时,一些编译器还会发出警告。

关于c - 全局变量和静态变量在 C 中如何协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671117/

相关文章:

c - 如何创建和调用指向函数的指针

c - strcpy在汇编中是什么意思?

javascript - 在其他函数中调用局部变量: Javascript

c - 为什么程序打印0.00

C++工厂实现麻烦

java - 为什么父类的静态方法隐藏在子类中?

java - 静态方法中的android上下文未定义

java - clsStr 变量是 "clsStr = (*env)->NewGlobalRef(env,cls)"的全局变量是什么?

php - Codeigniter:在模型与 Controller 、模型与模型、 Controller 与 Controller 之间使用变量的最简单方法

java - 需要一种高效的算法来解决这种复杂的结构