C 語言中 extern 變數和 global 變數有什麼區別?

時間 2021-06-06 23:08:48

1樓:新安當老闆

C語言裡沒有global變數,C++中的global指的是全域性作用域,對應C語言中的檔案作用域,extern指的是鏈結屬性,鏈結屬性和作用域是有區別的。

2樓:

extern在這種情形中代表需要預留乙個全域性可見的符號。

全域性的意思是在鏈結階段可以找到這個符號,因為在鏈結中是沒有非全域性的符號的(靜態區域性變數是不需要留符號的,只需要標明所需空間既可)。

所以extern乙個符號的含義與全域性變數的含義的區別就如同符號和變數的區別,它們是不同層次的,也沒有間接的關係。

3樓:陳良喬

extern與global無關

extern只是表示這個變數定義在其他編譯單元(通常是不同的原始檔)而定義在全域性作用域內部的變數,成為全域性變數換言之,global變數不一定有extern修飾而有extern修飾的必然是global變數更多可以參考《C程式設計伴侶》《C程式設計伴侶》試讀與預訂

4樓:李碩

在 C 語言中 extern 是關鍵字,global 不是。

乙個變數是不是 global 變數是由作用域決定的,當變數在全域性作用域中宣告時,這個變數就是全域性變數。

當 extern 修飾乙個變數時,就表明這個變數並不是在這裡宣告的。比如,你在標頭檔案裡宣告了乙個變數,那麼為了在源程式中顯得清楚明白,在源程式中應該加上乙個 extern 修飾的該變數的宣告。extern 也可以用於前向宣告(Forward Declaration)。

比如這樣:

#include

extern

intz

;int

main

()intz=

9;除了變數以外,extern 也可以修飾函式。C 語言中常見的乙個錯誤是 unresolved externals,這常常會由沒有引用庫檔案導致,由此可推知庫檔案中的函式是用 extern 修飾的。

C 語言中 main void main 和 int main void 有什麼區別?

Cosmia Fu 為啥沒人用這種形式呢?int main int argc,char argv 我比較喜歡這一種 和int main int argc,char argv,char env Leon int main void 表示返回乙個整數值,不接收任何引數。main 按照老的C語言標準,不寫...

c語言中,main int main void int main void main 有什麼區別?

PegasusWang 這篇文章講了為什麼void main是錯的,還有main各種寫法。 楊高峰 main 老式的寫法。返回型別int在新型的編譯器不可省略,否者會有警告。int main void 新式的寫法 int main 新式的寫法 void main 老式 不標準的寫法。6.0及之前的V...

C語言中,break和continue都是跳出迴圈,有啥區別?

兵長喵w 一般這個年齡段都不會長久,非常困難 你們要面對的困難是 1.不小心偷嘗禁果導致懷孕 你們這個年紀,女生還好,男生16歲開始就會想做那種事情,最好是克制,畢竟這個對未成年人的身體發育是有影響的,不是未成年該做的事,留到十八歲以後或者結婚再做,否則後果不堪設想,就算用了tao也還是會有一點懷孕...