【问题标题】:variables in static function and normal function静态函数和普通函数中的变量
【发布时间】:2013-01-16 07:42:42
【问题描述】:

我知道C中静态函数和普通函数的区别,我的问题是:静态函数中声明的变量和C中普通函数中声明的变量有什么区别吗?

谢谢。

【问题讨论】:

  • 你说的是静态和普通函数中的普通变量还是静态和普通函数中的静态和普通变量?我在这里有点困惑。
  • 我指的是静态和普通函数中的普通变量。

标签: c variables static


【解决方案1】:

静态函数中声明的变量和C中普通函数中声明的变量有区别吗?

答案:NO 没有区别

【讨论】:

    【解决方案2】:

    函数中声明的变量与其存储类类型无关。函数中定义的所有变量(静态或非静态)都将定义其范围,直到函数退出。 然而,一个函数是否为静态只会定义它对其他文件的可见性。

    【讨论】:

      【解决方案3】:

      不,static 关键字仅适用于应用于函数时的可见性。

      函数的static 关键字告诉编译器/链接器该函数不应在文件外可见。当应用于函数时,C 中的 static 等效于 Java 或 C++ 等语言中的 private

      【讨论】:

      • 函数的static 关键字告诉编译器/链接器该函数不应该在类外可见 不,这是不正确的。 static C++ 中的函数与访问规范无关。访问说明符就是这样做的。 C 中的static 控制链接。它为函数提供了一个内部链接(默认链接是外部的)。内部链接限制了同一翻译单元中函数/变量的范围和可见性。
      • C 什么时候开始上课了?你的第二个陈述是这样说的。而且你说的不正确。仅仅比较一个特征并声称两种不同的语言结构相同是完全不正确的。
      【解决方案4】:

      两个变量都是automatic,因此它们都分配在堆栈上。

      【讨论】:

      • 这个问题的最佳答案。
      【解决方案5】:

      静态函数中使用的术语static 使该函数的作用域仅适用于特定的.c 文件。这不会对该静态函数中声明的变量(autostaticregister)做任何事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多