首页 > 解决方案 > 全局变量属于c中的哪种存储类型?

问题描述

想知道在C编程语言中声明一个不带static的全局变量,属于auto、extern、static、reg中的哪个存储类型?

标签: cvariablesdeclarationlinkagestorage-duration

解决方案


这样的变量具有外部链接和静态存储持续时间。它可以由常量表达式或字符串字面量初始化。

来自 C 标准(6.2.2 标识符的链接)

5 如果函数标识符的声明没有存储类说明符,则它的链接将完全确定,就好像它是使用存储类说明符 extern 声明的一样。如果对象标识符的声明具有文件范围且没有存储类说明符,则其链接是外部的。

和(6.2.4 对象的存储期限)

3 一个对象,其标识符在没有存储类说明符_Thread_local 的情况下声明,并且具有外部或内部链接或具有存储类说明符静态,具有静态存储持续时间。它的生命周期是程序的整个执行过程,它的存储值仅在程序启动之前初始化一次

最后(6.7.9 初始化)

4 具有静态或线程存储持续时间的对象的初始化程序中的所有表达式应为常量表达式或字符串文字。


推荐阅读