全局變量和靜態變量

靜態變量:

其對應的作用域爲文件作用域。文件作用域:是指在函數外部聲明的變量只在當前文件範圍內(包括該文件內所有定義的函數)可用,但不能被其他其他文件中的函數訪問。具有文件作用域的變量或函數在聲明時,一般需要在變量或函數前加上static修飾符。static類型變量可以在函數外部定義也可以在函數內部定義。由於靜態變量或靜態函數只有在當前文件(定義它的文件)中有效,所以我們可以在多個文件中定義兩個或多個同名的靜態變量或函數。這樣當將多個獨立編譯的源文件鏈接成一個程序時,static修飾符避免一個文件中的外部變量由於與其他文件中的變量同名而發生衝突。

全局變量:

對應的作用域爲全局作用域。全局變量聲明在函數的外部因此又稱外部變量。全局變量作用範圍最廣,甚至可以作用於組成該程序的所有源文件。在其他鏈接的文件中也可以使用它們,但是使用前必須進行extern外部聲明。extern可以至於或者函數前,以標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。在使用extern聲明全局變量或函數時,一定要注意所聲明的變量或函數必須是存在的,且僅在一個源文件中實現定義。如果你的程序聲明瞭一個外部變量,但卻沒有在任何源文件中定義它,程序將可以編譯通過,但無法鏈接通過。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章