C 有本地绑定吗?

Does C have local bindings?

在某些语言中,例如 lispscheme,程序员可以使用 let 定义仅适用于特定局部范围的变量。例如,仅在另一个函数中调用的函数。

有对应的 C 语言吗?

简单地说,如果您希望变量 "count" 有自己的作用域:

void test()
{

    int input;  //input is usable in function test() 
    ...

    {
        int count;  //count only usable in scope {}
        ...
    }
}

在 C 中,变量在它们所包含的环绕 {} 括号的范围内是局部的。这在 C++ 和 Java 中是相同的。

如果变量是在函数外部定义的,那么它对于该模块是全局的,并且可以在其他模块中引用,方法是在需要的模块中从另一个模块引用变量之前添加 'extern' 前缀使用它。

如果变量是在函数外部定义的并且具有 'static' 前缀,那么它仅对该模块是全局的。

当我说模块时,这意味着所有内容都包含在同一个源文件中。 Java 不支持全局变量,但是它支持静态 class 变量,这几乎与全局变量相同。