代码之家  ›  专栏  ›  技术社区  ›  Vinod T. Patil

全局变量的默认存储类是什么?

  •  15
  • Vinod T. Patil  · 技术社区  · 16 年前

    全局变量的默认存储类是什么?

    当我在网上搜索时,有些网站说是 static . 但是,静态意味着内部链接和变量在文件范围之外不可用,也就是说,它不应该对其他对象文件可用。但是,它们仍然可以使用诸如 extern int i .

    如果我明确提到 静止的 到全局变量,则它在文件范围之外不可用。

    那么,全局变量的正确默认存储类是什么?

    2 回复  |  直到 16 年前
        1
  •  16
  •   Matthew Flaschen    16 年前

    默认存储持续时间是静态的,但默认链接是外部的。你不是唯一一个有点困惑的人。 The C Book (总是很好的参考)说:

    “你可能会发现互动 在这些不同的元素之间 既复杂又混乱:那是 因为他们是!”

    引用的部分, Declarations, Definitions and Accessibility ,有一个有用的表(8.1)。最后一行描述了您感兴趣的案例。正如它所指出的,没有存储类说明符的数据对象具有外部链接和静态持续时间。

        2
  •  17
  •   AnT stands with Russia    16 年前

    对于通常称为“全局”变量的变量,没有“默认存储类”。当变量在命名空间范围内定义时,它总是 静态存储时间 . 没有办法改变这一点,这就是为什么“违约”的概念在这里不适用的原因。(和) 储存时间 是正确的称呼。)

    应用关键字时 static 对于在命名空间范围中定义的变量,它不会影响其 储存时间 -它已经是静态的,仍然是静态的-但它影响它 连杆机构 . 关键词 静止的 将此类变量的链接从外部(默认)更改为内部。 连杆机构 是一个独立的概念,实际上与 储存时间 .