(2)全局變量的作用域及生存期
全局變量的作用域?yàn)閺淖兞慷x的位置開始,到整個(gè)源程序文件結(jié)束為止。生存期為整個(gè)程序的運(yùn)行期間。
注意:全局變量在整個(gè)程序運(yùn)行期間都占用內(nèi)存空間。全局變量必須在函數(shù)以外定義,因而降低了函數(shù)的通用性,影響函數(shù)的獨(dú)立性。使用全局變量時(shí),當(dāng)全局變量的值意外改變時(shí),會引起副作用,這種錯(cuò)誤一般難以查找。
、僭谕痪幾g單位內(nèi)用extern標(biāo)識符來擴(kuò)展全局變量的作用域
當(dāng)全局變量定義后,在引用函數(shù)前,應(yīng)在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便使編輯程序確定此外部變量已被定義,不必再為它分配存儲單元,此時(shí)的作用域從extern說明開始,到此函數(shù)結(jié)束。
注意:全局變量的定義只能出現(xiàn)一次,這時(shí)不可使用extern標(biāo)識符。如果多次引用全局變量,這時(shí)必須用extern標(biāo)識符。
、谠诓煌幾g單位內(nèi)用extern標(biāo)識符來擴(kuò)展全局變量的作用域
C語言中的不同函數(shù)可以存放在不同的源程序文件中,每個(gè)源程序文件可以單獨(dú)進(jìn)行編譯,進(jìn)行語法檢查,再生成目標(biāo)文件,最后用系統(tǒng)提供的連接程序把多個(gè)目標(biāo)文件連接成一個(gè)可執(zhí)行程序。
當(dāng)程序由多個(gè)源程序文件組成時(shí),若每個(gè)文件中都要引用同一個(gè)全局變量,這時(shí)如在每個(gè)源程序文件中都定義一個(gè)所需的同名全局變量,將在連接時(shí)產(chǎn)生重復(fù)定義錯(cuò)誤。解決的辦法是在其中一個(gè)源程序文件中定義所有全局變量,而在其他用到全局變量的源程序文件中用extern對這些變量進(jìn)行說明,以表明它們已在其他編譯單元中被定義。
、垤o態(tài)全局變量
當(dāng)用static標(biāo)識符說明全局變量時(shí),全局變量為靜態(tài)全局變量。靜態(tài)全局變量只能在定義它的源程序文件中使用,不能被其他源程序文件使用。
7.8內(nèi)部函數(shù)及外部函數(shù)
根據(jù)函數(shù)能否被其他源程序文件所調(diào)用,可將函數(shù)分為內(nèi)部函數(shù)和外部函數(shù)。
1.內(nèi)部函數(shù)
內(nèi)部函數(shù)是指一個(gè)函數(shù)只能由定義它的源程序文件所調(diào)用,內(nèi)部函數(shù)又稱為靜態(tài)函數(shù)。
格式:static類標(biāo)函數(shù)名(類型名形參數(shù)1,類型名形參數(shù)2,…)
上面的定義格式中,static用于說明函數(shù)為內(nèi)部函數(shù)。
2.外部函數(shù)
外部函數(shù)是指可以被其他源程序所調(diào)用的函數(shù)。
格式[extern]類型標(biāo)識符函數(shù)名(類型名形參數(shù)1,類型名形參數(shù)2,…)
上面定義格式中,extern表明所定義的函數(shù)為外部函數(shù),當(dāng)extern被省略時(shí),隱含為外部函數(shù)。
注意:在要調(diào)用此函數(shù)的源程序文件中,一般要用extern標(biāo)識符說明所用的函數(shù)為外部函數(shù)。
![]() |
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |
![]() | ![]() .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |