當我們聲明的任何全局變量,比如爲什麼C中全局變量的存儲類被隱式定義爲「extern」?
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'? –