【发布时间】:2017-07-10 17:19:00
【问题描述】:
当我们声明任何全局变量时,例如
int x;
相当于
extern int x;
现在默认情况下,编译器将全局变量初始化为 0,这意味着它们被分配了内存。但是如果我简单地写
extern int x;
那么这只会声明变量,而不会为其分配内存。所以,我的疑问是,如果我在int x 之前写extern 或者我不写,如果是全局变量,编译器会如何区别对待它们?在我写int x的情况下,它分配内存,同时它把extern放在int x之前,而在我写extern int x的情况下,它只声明变量而没有内存分配给它。请说明编译器在这两种情况下的行为方式。
【问题讨论】:
-
int x;不等于extern int x;(您似乎在最后一段中承认了这一点) -
问题是为什么你认为一个全局变量被声明为
extern?
标签: c scope global-variables extern