官术网_书友最值得收藏!

建議8:正確地選擇變量的存儲(chǔ)類型

在計(jì)算機(jī)中,保存變量當(dāng)前值的存儲(chǔ)單元有兩類:一類是內(nèi)存,另一類是CPU的寄存器。變量的存儲(chǔ)類型關(guān)系到變量的存儲(chǔ)位置,在C語(yǔ)言中,為變量提供了4種存儲(chǔ)類型:auto(自動(dòng))型、static(靜態(tài))型、register(寄存器)型和extern(外部)型。它們關(guān)系到變量在內(nèi)存中的存放位置,由此決定了變量的保留時(shí)間和變量的作用范圍。

變量的保留時(shí)間又稱為生存期,從時(shí)間的角度來(lái)看,可將變量分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)兩種情況。靜態(tài)存儲(chǔ)是指變量存儲(chǔ)在內(nèi)存的靜態(tài)存儲(chǔ)區(qū)中,在編譯時(shí)就為它分配了存儲(chǔ)空間,在整個(gè)程序的運(yùn)行期間,該變量占有固定的存儲(chǔ)單元,程序執(zhí)行結(jié)束后,這部分空間才會(huì)釋放,變量的值在整個(gè)程序中始終存在;動(dòng)態(tài)存儲(chǔ)是指變量存儲(chǔ)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中,在程序的運(yùn)行過(guò)程中,只有當(dāng)變量所在的函數(shù)被調(diào)用時(shí),編譯系統(tǒng)才臨時(shí)為該變量分配一段內(nèi)存單元,函數(shù)調(diào)用結(jié)束時(shí),該變量空間就會(huì)釋放,變量的值只在函數(shù)調(diào)用期存在。

變量的作用范圍又稱為作用域,從空間角度來(lái)看,可以將變量分為局部變量和全局變量。局部變量是在一個(gè)函數(shù)或復(fù)合語(yǔ)句內(nèi)定義的變量,它僅在函數(shù)或復(fù)合語(yǔ)句內(nèi)有效,編譯時(shí),編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行過(guò)程中,當(dāng)局部變量所在的函數(shù)被調(diào)用時(shí),編譯系統(tǒng)才會(huì)根據(jù)需要臨時(shí)分配內(nèi)存,調(diào)用結(jié)束后,釋放空間;全局變量是在函數(shù)之外定義的變量,其作用范圍為從定義處開始到本文件結(jié)束,編譯時(shí),編譯系統(tǒng)會(huì)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終它都占用著固定的單元。

主站蜘蛛池模板: 东台市| 东城区| 东乌珠穆沁旗| 荆州市| 红安县| 蒙城县| 湘西| 新干县| 金川县| 岑溪市| 贵溪市| 武功县| 蕉岭县| 桓台县| 荥经县| 彩票| 延庆县| 中西区| 阿克陶县| 南投县| 同仁县| 色达县| 栾川县| 无棣县| 农安县| 黔南| 汶川县| 宝清县| 阿图什市| 平凉市| 皋兰县| 淮南市| 吴忠市| 瑞金市| 清苑县| 石阡县| 双鸭山市| 宁乡县| 峨山| 铜陵市| 江陵县|