全局變量的作用域是整個程序 c語言全局變量的作用域
大家好,如果您還對全局變量的作用域是整個程序不太了解,沒有關(guān)系,今天就由本站為大家分享全局變量的作用域是整個程序的知識,包括c語言全局變量的作用域的問題都會給大家分析到...
大家好,如果您還對全局變量的作用域是整個程序不太了解,沒有關(guān)系,今天就由本站為大家分享全局變量的作用域是整個程序的知識,包括c語言全局變量的作用域的問題都會給大家分析到,還望可以解決大家的問題,下面我們就開始吧!
全局變量和局部變量的在內(nèi)存的區(qū)別
全局變量和局部變量的區(qū)別如下:
1.作用域不同:全局變量的作用域為整個程序,而局部變量的作用域為當前函數(shù)或循環(huán)等2.內(nèi)存存儲方式不同:全局變量存儲在全局數(shù)據(jù)區(qū)中,局部變量存儲在棧區(qū)3.生命期不同:全局變量的生命期和主程序一樣,隨程序的銷毀而銷毀,局部變量在函數(shù)內(nèi)部或循環(huán)內(nèi)部,隨函數(shù)的退出或循環(huán)退出就不存在了4.使用方式不同:全局變量在聲明后程序的各個部分都可以用到,但是局部變量只能在局部使用。函數(shù)內(nèi)部會優(yōu)先使用局部變量再使用全局變量。
局部變量可以與全局變量重名,但是局部變量會屏蔽全局變量。全局變量是編程術(shù)語中的一種,源自于變量之分。變量分為局部與全局,局部變量又可稱之為內(nèi)部變量。
由某對象或某個函數(shù)所創(chuàng)建的變量通常都是局部變量,只能被內(nèi)部引用,而無法被其它對象或函數(shù)引用。
全局變量既可以是某對象函數(shù)創(chuàng)建,也可以是在本程序任何地方創(chuàng)建。全局變量是可以被本程序所有對象或函數(shù)引用。
局部變量和全局變量的區(qū)別是什么
具體來說,全局變量和局部變量的區(qū)別如下:
1.作用域不同:全局變量的作用域為整個程序,而局部變量的作用域為當前函數(shù)或循環(huán)等
2.內(nèi)存存儲方式不同:全局變量存儲在全局數(shù)據(jù)區(qū)中,局部變量存儲在棧區(qū)
3.生命期不同:全局變量的生命期和主程序一樣,隨程序的銷毀而銷毀,局部變量在函數(shù)內(nèi)部或循環(huán)內(nèi)部,隨函數(shù)的退出或循環(huán)退出就不存在了
4.使用方式不同:全局變量在聲明后程序的各個部分都可以用到,但是局部變量只能在局部使用。函數(shù)內(nèi)部會優(yōu)先使用局部變量再使用全局變量
cpp中定義的靜態(tài)全局變量的作用域是
全局變量和靜態(tài)變量的存儲方式是一樣的,只是作用域不同。如果它們未初始化或初始化為0則會存儲在BSS段,如果初始化為非0值則會存儲在DATA段,見進程的地址空間分配一文。靜態(tài)變量的作用域是當前源文件,全局變量的作用域是整個可執(zhí)行程序。值得注意的是:
如果在頭文件定義全局變量,在預(yù)編譯期間#include的頭文件會被拷貝進源文件中,編譯器是不知道頭文件的。
雖然全局變量是全局作用域,但需要extern關(guān)鍵字來聲明以通過編譯。因為C++是強類型語言,編譯時需要根據(jù)變量聲明做類型檢查。
全局變量的使用
1.全局變量的使用是存在問題的,不應(yīng)該隨意使用。這是因為全局變量的作用域是整個程序,任何地方都可以訪問和修改,容易造成意料之外的結(jié)果。
2.在需要使用全局變量時,應(yīng)該盡量避免多個部分修改同一個變量,否則會產(chǎn)生不可預(yù)知的后果。同時,應(yīng)該盡量將全局變量的數(shù)目限制在最小,只定義那些必須在整個程序中使用的變量。
3.在定義全局變量時,需要在變量名前加上關(guān)鍵字"global",以表示這是一個全局變量,否則會被當作局部變量處理。同時,建議使用常量來定義全局變量,以免程序中被修改導致問題。
4.另外,在編寫程序時,應(yīng)該盡量避免使用全局變量,而是使用函數(shù)參數(shù)、返回值和局部變量來實現(xiàn)相應(yīng)的功能,這樣更容易維護和調(diào)試程序。
僅在本源文件中可用的全局變量
在一個C程序中,若要定義一個只允許本源程序文件中所有函數(shù)使用的全局變量,則該變量需要定義的存儲類別是靜態(tài)變量static。 全局變量(外部變量)的說明之前再冠以static就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。 ?而靜態(tài)全局變量則限制了其作62616964757a686964616fe59b9ee7ad9431333433626437用域,即只在定義該變量的源文件內(nèi)有效,在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。
好了,文章到此結(jié)束,希望可以幫助到大家。
本文鏈接:http://xinin56.com/kaifa/829.html