【问题标题】:Does C have local bindings?C 有本地绑定吗?
【发布时间】:2016-11-03 10:10:46
【问题描述】:

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

有 C 等价物吗?

【问题讨论】:

  • C 使用{..} 进行范围命名。在时钟内声明的任何变量都是该块的本地变量。
  • 如果您在任何例程之外使用静态,则范围仅在该文件内。如果静态声明在函数内,则在重新进入时记住该值。这就是你要找的吗?
  • C 变量默认为auto,不会超出其范围
  • @LưuVĩnhPhúc:完全错了!
  • 你的 C 书怎么说?你有什么不明白的?

标签: c let


【解决方案1】:

简单地说,如果你想要变量“count”有它自己的作用域:

void test()
{

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

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

【讨论】:

    【解决方案2】:

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

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

    如果变量是在函数外部定义的并且具有“静态”前缀,则它仅对该模块是全局的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多